summaryrefslogtreecommitdiff
path: root/data/bash/bash40-013
diff options
context:
space:
mode:
Diffstat (limited to 'data/bash/bash40-013')
-rw-r--r--data/bash/bash40-013153
1 files changed, 153 insertions, 0 deletions
diff --git a/data/bash/bash40-013 b/data/bash/bash40-013
new file mode 100644
index 000000000..df1fc493b
--- /dev/null
+++ b/data/bash/bash40-013
@@ -0,0 +1,153 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-013
+
+Bug-Reported-by: jidanni@jidanni.org
+Bug-Reference-ID:
+Bug-Reference-URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=519165
+
+Bug-Description:
+
+Though references to $@ when there are no positional parameters will now
+cause the shell to exit if the `errexit' option has been enabled, constructs
+such as ${@:-foo} should not cause an exit.
+
+Patch:
+
+*** ../bash-4.0-patched/subst.c 2009-03-08 21:24:39.000000000 -0400
+--- subst.c 2009-03-14 19:04:10.000000000 -0400
+***************
+*** 86,89 ****
+--- 86,90 ----
+ /* Flags for the `pflags' argument to param_expand() */
+ #define PF_NOCOMSUB 0x01 /* Do not perform command substitution */
++ #define PF_IGNUNBOUND 0x02 /* ignore unbound vars even if -u set */
+
+ /* These defs make it easier to use the editor. */
+***************
+*** 264,268 ****
+ static int chk_arithsub __P((const char *, int));
+
+! static WORD_DESC *parameter_brace_expand_word __P((char *, int, int));
+ static WORD_DESC *parameter_brace_expand_indir __P((char *, int, int, int *, int *));
+ static WORD_DESC *parameter_brace_expand_rhs __P((char *, char *, int, int, int *, int *));
+--- 265,269 ----
+ static int chk_arithsub __P((const char *, int));
+
+! static WORD_DESC *parameter_brace_expand_word __P((char *, int, int, int));
+ static WORD_DESC *parameter_brace_expand_indir __P((char *, int, int, int *, int *));
+ static WORD_DESC *parameter_brace_expand_rhs __P((char *, char *, int, int, int *, int *));
+***************
+*** 5196,5202 ****
+ NAME was found inside of a double-quoted expression. */
+ static WORD_DESC *
+! parameter_brace_expand_word (name, var_is_special, quoted)
+ char *name;
+! int var_is_special, quoted;
+ {
+ WORD_DESC *ret;
+--- 5197,5203 ----
+ NAME was found inside of a double-quoted expression. */
+ static WORD_DESC *
+! parameter_brace_expand_word (name, var_is_special, quoted, pflags)
+ char *name;
+! int var_is_special, quoted, pflags;
+ {
+ WORD_DESC *ret;
+***************
+*** 5230,5234 ****
+
+ ret = param_expand (tt, &sindex, quoted, (int *)NULL, (int *)NULL,
+! (int *)NULL, (int *)NULL, 0);
+ free (tt);
+ }
+--- 5231,5235 ----
+
+ ret = param_expand (tt, &sindex, quoted, (int *)NULL, (int *)NULL,
+! (int *)NULL, (int *)NULL, pflags);
+ free (tt);
+ }
+***************
+*** 5291,5295 ****
+ WORD_DESC *w;
+
+! w = parameter_brace_expand_word (name, var_is_special, quoted);
+ t = w->word;
+ /* Have to dequote here if necessary */
+--- 5292,5296 ----
+ WORD_DESC *w;
+
+! w = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND);
+ t = w->word;
+ /* Have to dequote here if necessary */
+***************
+*** 5308,5312 ****
+ return (WORD_DESC *)NULL;
+
+! w = parameter_brace_expand_word (t, SPECIAL_VAR(t, 0), quoted);
+ free (t);
+
+--- 5309,5313 ----
+ return (WORD_DESC *)NULL;
+
+! w = parameter_brace_expand_word (t, SPECIAL_VAR(t, 0), quoted, 0);
+ free (t);
+
+***************
+*** 6659,6663 ****
+ tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
+ else
+! tdesc = parameter_brace_expand_word (name, var_is_special, quoted);
+
+ if (tdesc)
+--- 6660,6664 ----
+ tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
+ else
+! tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND);
+
+ if (tdesc)
+***************
+*** 6990,6994 ****
+ list = list_rest_of_args ();
+
+! if (list == 0 && unbound_vars_is_error)
+ {
+ uerror[0] = '$';
+--- 6991,6995 ----
+ list = list_rest_of_args ();
+
+! if (list == 0 && unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0)
+ {
+ uerror[0] = '$';
+***************
+*** 7052,7056 ****
+ list = list_rest_of_args ();
+
+! if (list == 0 && unbound_vars_is_error)
+ {
+ uerror[0] = '$';
+--- 7053,7057 ----
+ list = list_rest_of_args ();
+
+! if (list == 0 && unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0)
+ {
+ uerror[0] = '$';
+
+
+*** ../bash-4.0/patchlevel.h 2009-01-04 14:32:40.000000000 -0500
+--- patchlevel.h 2009-02-22 16:11:31.000000000 -0500
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 12
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 13
+
+ #endif /* _PATCHLEVEL_H_ */