123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- BASH PATCH REPORT
- =================
- Bash-Release: 3.1
- Patch-ID: bash31-017
- Bug-Reported-by: syphir@syphir.sytes.net
- Bug-Reference-ID: <442421F5.3010105@syphir.sytes.net>
- Bug-Reference-URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=358831
- Bug-Description:
- Array expansion fails with an arithmetic syntax error when the subscript
- appears within double quotes. For example: ${a["4"]}.
- Patch:
- *** bash-3.1/subst.c Wed Apr 12 08:47:08 2006
- --- bash-3.1/subst.c Wed Apr 12 08:49:02 2006
- ***************
- *** 2576,2579 ****
- --- 2576,2586 ----
- }
-
- + char *
- + expand_arith_string (string, quoted)
- + char *string;
- + {
- + return (expand_string_if_necessary (string, quoted, expand_string));
- + }
- +
- #if defined (COND_COMMAND)
- /* Just remove backslashes in STRING. Returns a new string. */
- ***************
- *** 5249,5253 ****
- t = (char *)0;
-
- ! temp1 = expand_string_if_necessary (substr, Q_DOUBLE_QUOTES, expand_string);
- *e1p = evalexp (temp1, &expok);
- free (temp1);
- --- 5256,5260 ----
- t = (char *)0;
-
- ! temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES);
- *e1p = evalexp (temp1, &expok);
- free (temp1);
- ***************
- *** 5294,5298 ****
- t++;
- temp2 = savestring (t);
- ! temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string);
- free (temp2);
- t[-1] = ':';
- --- 5301,5305 ----
- t++;
- temp2 = savestring (t);
- ! temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES);
- free (temp2);
- t[-1] = ':';
- ***************
- *** 6436,6440 ****
-
- /* Expand variables found inside the expression. */
- ! temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string);
- free (temp2);
-
- --- 6443,6447 ----
-
- /* Expand variables found inside the expression. */
- ! temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES);
- free (temp2);
-
- ***************
- *** 6478,6482 ****
-
- /* Do initial variable expansion. */
- ! temp1 = expand_string_if_necessary (temp, Q_DOUBLE_QUOTES, expand_string);
-
- goto arithsub;
- --- 6485,6489 ----
-
- /* Do initial variable expansion. */
- ! temp1 = expand_arith_string (temp, Q_DOUBLE_QUOTES);
-
- goto arithsub;
- *** bash-3.1/subst.h Sun Nov 7 15:12:28 2004
- --- bash-3.1/subst.h Mon Mar 27 09:10:38 2006
- ***************
- *** 152,155 ****
- --- 152,158 ----
- extern char *expand_assignment_string_to_string __P((char *, int));
-
- + /* Expand an arithmetic expression string */
- + extern char *expand_arith_string __P((char *, int));
- +
- /* De-quoted quoted characters in STRING. */
- extern char *dequote_string __P((char *));
- *** bash-3.1/arrayfunc.c Mon Jul 4 20:25:58 2005
- --- bash-3.1/arrayfunc.c Mon Mar 27 09:10:47 2006
- ***************
- *** 593,601 ****
- strncpy (exp, s, len - 1);
- exp[len - 1] = '\0';
- ! #if 0
- ! t = expand_string_to_string (exp, 0);
- ! #else
- ! t = expand_string_to_string (exp, Q_DOUBLE_QUOTES);
- ! #endif
- this_command_name = (char *)NULL;
- val = evalexp (t, &expok);
- --- 591,595 ----
- strncpy (exp, s, len - 1);
- exp[len - 1] = '\0';
- ! t = expand_arith_string (exp, 0);
- this_command_name = (char *)NULL;
- val = evalexp (t, &expok);
- *** bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
- --- bash-3.1/patchlevel.h Wed Dec 7 13:48:42 2005
- ***************
- *** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
- ! #define PATCHLEVEL 16
-
- #endif /* _PATCHLEVEL_H_ */
- --- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
- ! #define PATCHLEVEL 17
-
- #endif /* _PATCHLEVEL_H_ */
|