summaryrefslogtreecommitdiff
path: root/data/bash/bash40-028
diff options
context:
space:
mode:
Diffstat (limited to 'data/bash/bash40-028')
-rw-r--r--data/bash/bash40-028172
1 files changed, 172 insertions, 0 deletions
diff --git a/data/bash/bash40-028 b/data/bash/bash40-028
new file mode 100644
index 000000000..a5b0b60a3
--- /dev/null
+++ b/data/bash/bash40-028
@@ -0,0 +1,172 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 4.0
+Patch-ID: bash40-028
+
+Bug-Reported-by: martin f krafft <madduck@debian.org>
+Bug-Reference-ID: <4A4E39E7.5080807@debian.org>
+Bug-Reference-URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=519165
+ http://lists.gnu.org/archive/html/bug-bash/2009-07/msg00011.html
+
+Bug-Description:
+
+bash-4.0 reverted to the historical shell behavior of raising an error
+when $@ or $* was expanded after `set -u' had been executed and there
+were no positional parameters. The Posix working group has since
+clarified the standard's position on the issue, and $@ and $* are now the
+only variables, parameters, or special parameters that do not raise an
+error when unset if set -u is enabled.
+
+Patch:
+
+*** ../bash-4.0-patched/subst.c Mon Mar 23 11:34:55 2009
+--- subst.c Wed Jun 17 18:12:18 2009
+***************
+*** 6768,6778 ****
+
+ case RBRACE:
+! if (var_is_set == 0 && unbound_vars_is_error)
+ {
+ err_unboundvar (name);
+ FREE (value);
+ FREE (temp);
+ free (name);
+- last_command_exit_value = EXECUTION_FAILURE;
+ return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal);
+ }
+--- 6794,6804 ----
+
+ case RBRACE:
+! if (var_is_set == 0 && unbound_vars_is_error && ((name[0] != '@' && name[0] != '*') || name[1]))
+ {
++ last_command_exit_value = EXECUTION_FAILURE;
+ err_unboundvar (name);
+ FREE (value);
+ FREE (temp);
+ free (name);
+ return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal);
+ }
+***************
+*** 6991,6994 ****
+--- 7017,7029 ----
+ list = list_rest_of_args ();
+
++ #if 0
++ /* According to austin-group posix proposal by Geoff Clare in
++ <20090505091501.GA10097@squonk.masqnet> of 5 May 2009:
++
++ "The shell shall write a message to standard error and
++ immediately exit when it tries to expand an unset parameter
++ other than the '@' and '*' special parameters."
++ */
++
+ if (list == 0 && unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0)
+ {
+***************
+*** 6996,7003 ****
+ uerror[1] = '*';
+ uerror[2] = '\0';
+- err_unboundvar (uerror);
+ last_command_exit_value = EXECUTION_FAILURE;
+ return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal);
+ }
+
+ /* If there are no command-line arguments, this should just
+--- 7031,7039 ----
+ uerror[1] = '*';
+ uerror[2] = '\0';
+ last_command_exit_value = EXECUTION_FAILURE;
++ err_unboundvar (uerror);
+ return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal);
+ }
++ #endif
+
+ /* If there are no command-line arguments, this should just
+***************
+*** 7053,7056 ****
+--- 7089,7101 ----
+ list = list_rest_of_args ();
+
++ #if 0
++ /* According to austin-group posix proposal by Geoff Clare in
++ <20090505091501.GA10097@squonk.masqnet> of 5 May 2009:
++
++ "The shell shall write a message to standard error and
++ immediately exit when it tries to expand an unset parameter
++ other than the '@' and '*' special parameters."
++ */
++
+ if (list == 0 && unbound_vars_is_error && (pflags & PF_IGNUNBOUND) == 0)
+ {
+***************
+*** 7058,7065 ****
+ uerror[1] = '@';
+ uerror[2] = '\0';
+- err_unboundvar (uerror);
+ last_command_exit_value = EXECUTION_FAILURE;
+ return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal);
+ }
+
+ /* We want to flag the fact that we saw this. We can't turn
+--- 7103,7111 ----
+ uerror[1] = '@';
+ uerror[2] = '\0';
+ last_command_exit_value = EXECUTION_FAILURE;
++ err_unboundvar (uerror);
+ return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal);
+ }
++ #endif
+
+ /* We want to flag the fact that we saw this. We can't turn
+*** ../bash-4.0-patched/doc/bash.1 Wed Feb 18 15:13:56 2009
+--- doc/bash.1 Wed Jun 17 08:51:19 2009
+***************
+*** 8258,8264 ****
+ .TP 8
+ .B \-u
+! Treat unset variables as an error when performing
+ parameter expansion. If expansion is attempted on an
+! unset variable, the shell prints an error message, and,
+ if not interactive, exits with a non-zero status.
+ .TP 8
+--- 8274,8281 ----
+ .TP 8
+ .B \-u
+! Treat unset variables and parameters other than the special
+! parameters "@" and "*" as an error when performing
+ parameter expansion. If expansion is attempted on an
+! unset variable or parameter, the shell prints an error message, and,
+ if not interactive, exits with a non-zero status.
+ .TP 8
+*** ../bash-4.0-patched/doc/bashref.texi Wed Feb 18 15:14:43 2009
+--- doc/bashref.texi Wed Jun 17 08:50:46 2009
+***************
+*** 4139,4143 ****
+
+ @item -u
+! Treat unset variables as an error when performing parameter expansion.
+ An error message will be written to the standard error, and a non-interactive
+ shell will exit.
+--- 4151,4156 ----
+
+ @item -u
+! Treat unset variables and parameters other than the special parameters
+! @samp{@@} or @samp{*} as an error when performing parameter expansion.
+ An error message will be written to the standard error, and a non-interactive
+ shell will exit.
+*** ../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 27
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 28
+
+ #endif /* _PATCHLEVEL_H_ */