#! /bin/sh /usr/share/dpatch/dpatch-run ## 03_scanadf_options_fix.dpatch by ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: Get option descriptor 0 before getting the value for option 0. @DPATCH@ diff -urNad sane-frontends-1.0.14~/src/scanadf.c sane-frontends-1.0.14/src/scanadf.c --- sane-frontends-1.0.14~/src/scanadf.c 2005-09-18 13:51:00.000000000 +0200 +++ sane-frontends-1.0.14/src/scanadf.c 2008-08-05 12:00:14.826083326 +0200 @@ -550,15 +550,33 @@ const SANE_Option_Descriptor * opt; SANE_Int num_dev_options; int i, option_count; + SANE_Status status; /* and now build the full table of long options: */ - sane_control_option (device, 0, SANE_ACTION_GET_VALUE, &num_dev_options, 0); + opt = sane_get_option_descriptor (device, 0); + if (opt == NULL) + { + fprintf (stderr, "Could not get option descriptor for option 0\n"); + exit (1); + } + + status = sane_control_option (device, 0, SANE_ACTION_GET_VALUE, &num_dev_options, 0); + if (status != SANE_STATUS_GOOD) + { + fprintf (stderr, "Could not get value for option 0: %s\n", sane_strstatus (status)); + exit (1); + } option_count = 0; - for (i = 0; i < num_dev_options; ++i) + for (i = 1; i < num_dev_options; ++i) { opt = sane_get_option_descriptor (device, i); + if (opt == NULL) + { + fprintf (stderr, "Could not get option descriptor for option %d\n", i); + exit (1); + } if (!SANE_OPTION_IS_SETTABLE (opt->cap)) continue;