tag 518289 + patch
kthxbye

Hi,

I guess this has already been fixed upstream, but for the impatient:
gen_shell_function_matches() is trying to restore a parser state
that has never been saved. My fix is simple and pragmatic as I don't
have any in-depth knowledge regarding whether it's necessary to save
the parser state in that place at all... but bash4 works with it, so
here goes.


Regards,

Jan
diff -u bash-4.0/debian/rules bash-4.0/debian/rules
--- bash-4.0/debian/rules
+++ bash-4.0/debian/rules
@@ -555,6 +555,7 @@
        input-err \
        exec-redirections-man \
        bash-aliases-repeat \
+       tentative-4.0parserstate
 
 ifeq ($(with_gfdl),yes)
   debian_patches += \
only in patch2:
unchanged:
--- bash-4.0.orig/debian/patches/tentative-4.0parserstate.dpatch
+++ bash-4.0/debian/patches/tentative-4.0parserstate.dpatch
@@ -0,0 +1,29 @@
+#! /bin/sh -e
+
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+    pdir="-d $3"
+elif [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+    -patch) patch $pdir -f --no-backup-if-mismatch -p1 < $0;;
+    -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p1 < $0;;
+    *)
+       echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+       exit 1
+esac
+exit 0
+
+# DP: Save the parser state so it can later be restored. Heh.
+
+--- bash-4.0/pcomplete.c       2009-02-01 23:12:31.000000000 +0100
++++ bash-4.0/pcomplete.cM      2009-03-09 23:04:33.295242137 +0100
+@@ -1032,6 +1032,7 @@
+   cmdlist = build_arg_list (funcname, text, lwords, cw);
+ 
+   pps = &ps;
++  save_parser_state(pps);
+   begin_unwind_frame ("gen-shell-function-matches");
+   add_unwind_protect (restore_parser_state, (char *)pps);
+   add_unwind_protect (dispose_words, (char *)cmdlist);

Attachment: signature.asc
Description: Digital signature

Reply via email to