# --- T2-COPYRIGHT-NOTE-BEGIN ---
|
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
|
#
|
|
# T2 SDE: package/.../bash/bash30-017t2.patch
|
|
# Copyright (C) 2004 - 2005 The T2 SDE Project
|
|
#
|
|
# More information can be found in the files COPYING and README.
|
|
#
|
|
# This patch file is dual-licensed. It is available under the license the
|
|
# patched project is licensed under, as long as it is an OpenSource license
|
|
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
|
|
# of the GNU General Public License as published by the Free Software
|
|
# Foundation; either version 2 of the License, or (at your option) any later
|
|
# version.
|
|
# --- T2-COPYRIGHT-NOTE-END ---
|
|
First of all, Chet is unwilling (actually uncapable because he is
|
|
obviously not using a vcs) to release an official patch.
|
|
|
|
According to the bash-bug mailing list and based on some hints from Chet,
|
|
this patch was created. If fixes the off-by-n bug due to assigning
|
|
COMP_WORDBREAKS in an rcfile and the segfault produced by 'unset FUNCNAME'.
|
|
--jsaw
|
|
|
|
diff -ur bash-3.0/variables.c bash-3.0-17t2/variables.c
|
|
--- bash-3.0/variables.c 2005-01-12 03:36:49.000000000 +0100
|
|
+++ bash-3.0-17t2/variables.c 2005-01-12 03:58:24.769591688 +0100
|
|
@@ -1386,7 +1386,7 @@
|
|
#else
|
|
INIT_DYNAMIC_VAR ("FUNCNAME", (char *)NULL, get_funcname, null_assign);
|
|
#endif
|
|
- VSETATTR (v, att_invisible|att_noassign);
|
|
+ VSETATTR (v, att_invisible|att_noassign|att_nounset);
|
|
return v;
|
|
}
|
|
|
|
@@ -1909,9 +1909,13 @@
|
|
|
|
VUNSETATTR (var, att_invisible);
|
|
|
|
- t = make_variable_value (var, value);
|
|
- FREE (value_cell (var));
|
|
- var_setvalue (var, t);
|
|
+ if (var->assign_func)
|
|
+ (*(var->assign_func)) (var, value, -1);
|
|
+ else {
|
|
+ t = make_variable_value (var, value);
|
|
+ FREE (value_cell (var));
|
|
+ var_setvalue (var, t);
|
|
+ }
|
|
|
|
INVALIDATE_EXPORTSTR (var);
|
|
|
|
@@ -3637,6 +3641,7 @@
|
|
#endif
|
|
|
|
#if defined (READLINE)
|
|
+ { "COMP_WORDBREAKS", sv_comp_wordbreaks },
|
|
{ "HOSTFILE", sv_hostfile },
|
|
#endif
|
|
|
|
@@ -3776,6 +3781,19 @@
|
|
}
|
|
}
|
|
|
|
+#if defined (READLINE)
|
|
+void
|
|
+sv_comp_wordbreaks (name)
|
|
+ char *name;
|
|
+{
|
|
+ SHELL_VAR *sv;
|
|
+
|
|
+ sv = find_variable (name);
|
|
+ if (sv == 0)
|
|
+ rl_completer_word_break_characters = (char *)NULL;
|
|
+}
|
|
+#endif
|
|
+
|
|
/* What to do when GLOBIGNORE changes. */
|
|
void
|
|
sv_globignore (name)
|