summaryrefslogtreecommitdiff
path: root/debian/patches/06_word_list_fix.dpatch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/06_word_list_fix.dpatch')
-rw-r--r--debian/patches/06_word_list_fix.dpatch42
1 files changed, 42 insertions, 0 deletions
diff --git a/debian/patches/06_word_list_fix.dpatch b/debian/patches/06_word_list_fix.dpatch
new file mode 100644
index 0000000..90d223c
--- /dev/null
+++ b/debian/patches/06_word_list_fix.dpatch
@@ -0,0 +1,42 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 06_word_list_fix.dpatch by <jblache@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Fix word list handling when current value is not part of the list.
+
+@DPATCH@
+diff -urNad sane-frontends-1.0.14~/src/gtkglue.c sane-frontends-1.0.14/src/gtkglue.c
+--- sane-frontends-1.0.14~/src/gtkglue.c 2009-11-14 10:46:03.248492255 +0100
++++ sane-frontends-1.0.14/src/gtkglue.c 2009-11-14 10:46:07.941492660 +0100
+@@ -913,6 +913,7 @@
+ char **str_list;
+ int i, j;
+ int num_vector_opts = 0, *vector_opts;
++ SANE_Bool val_in_list;
+
+ main_hbox = gtk_hbox_new (FALSE, 2);
+
+@@ -1073,13 +1074,23 @@
+ case SANE_CONSTRAINT_WORD_LIST:
+ /* use a "list-selection" widget */
+ num_words = opt->constraint.word_list[0];
++ if (num_words == 0)
++ {
++ fprintf (stderr, "panel_build: empty word list!\n");
++ break;
++ }
++ val_in_list = SANE_FALSE;
+ str_list = malloc ((num_words + 1) * sizeof (str_list[0]));
+ for (j = 0; j < num_words; ++j)
+ {
++ if (opt->constraint.word_list[j + 1] == val)
++ val_in_list = SANE_TRUE;
+ sprintf (str, "%d", opt->constraint.word_list[j + 1]);
+ str_list[j] = strdup (str);
+ }
+ str_list[j] = 0;
++ if (!val_in_list)
++ val = opt->constraint.word_list[1];
+ sprintf (str, "%d", val);
+ option_menu_new (parent, title, str_list, str, elem,
+ dialog->tooltips, opt->desc,