diff options
Diffstat (limited to 'debian/patches/03_scanadf_options_fix.dpatch')
-rw-r--r-- | debian/patches/03_scanadf_options_fix.dpatch | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/debian/patches/03_scanadf_options_fix.dpatch b/debian/patches/03_scanadf_options_fix.dpatch new file mode 100644 index 0000000..4c1b8cb --- /dev/null +++ b/debian/patches/03_scanadf_options_fix.dpatch @@ -0,0 +1,46 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 03_scanadf_options_fix.dpatch by <jblache@debian.org> +## +## 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; |