summaryrefslogtreecommitdiff
path: root/debian/patches/03_scanadf_options_fix.dpatch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/03_scanadf_options_fix.dpatch')
-rw-r--r--debian/patches/03_scanadf_options_fix.dpatch46
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;