123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- BASH PATCH REPORT
- =================
- Bash-Release: 3.1
- Patch-ID: bash31-001
- Bug-Reported-by: Mike Frysinger <vapier@gentoo.org>
- Bug-Reference-ID: <20051212015924.GA820@toucan.gentoo.org> <20051214034438.GK1863@toucan.gentoo.org>
- Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2005-12/msg00030.html http://lists.gnu.org/archive/html/bug-bash/2005-12/msg00041.html
- Bug-Description:
- There are parsing problems with compound assignments in several contexts,
- including as arguments to builtins like `local', `eval', and `let', and
- as multiple assignments in a single command.
- Patch:
- *** bash-3.1/parse.y Fri Nov 11 23:14:18 2005
- --- bash-3.1/parse.y Fri Dec 16 20:43:07 2005
- ***************
- *** 3696,3700 ****
- b = builtin_address_internal (token, 0);
- if (b && (b->flags & ASSIGNMENT_BUILTIN))
- ! parser_state |= PST_ASSIGNOK;
- }
-
- --- 3696,3702 ----
- b = builtin_address_internal (token, 0);
- if (b && (b->flags & ASSIGNMENT_BUILTIN))
- ! parser_state |= PST_ASSIGNOK;
- ! else if (STREQ (token, "eval") || STREQ (token, "let"))
- ! parser_state |= PST_ASSIGNOK;
- }
-
- ***************
- *** 4687,4691 ****
- {
- WORD_LIST *wl, *rl;
- ! int tok, orig_line_number, orig_token_size;
- char *saved_token, *ret;
-
- --- 4689,4693 ----
- {
- WORD_LIST *wl, *rl;
- ! int tok, orig_line_number, orig_token_size, orig_last_token, assignok;
- char *saved_token, *ret;
-
- ***************
- *** 4693,4696 ****
- --- 4695,4699 ----
- orig_token_size = token_buffer_size;
- orig_line_number = line_number;
- + orig_last_token = last_read_token;
-
- last_read_token = WORD; /* WORD to allow reserved words here */
- ***************
- *** 4699,4702 ****
- --- 4702,4707 ----
- token_buffer_size = 0;
-
- + assignok = parser_state&PST_ASSIGNOK; /* XXX */
- +
- wl = (WORD_LIST *)NULL; /* ( */
- parser_state |= PST_COMPASSIGN;
- ***************
- *** 4741,4745 ****
- }
-
- ! last_read_token = WORD;
- if (wl)
- {
- --- 4746,4750 ----
- }
-
- ! last_read_token = orig_last_token; /* XXX - was WORD? */
- if (wl)
- {
- ***************
- *** 4753,4756 ****
- --- 4758,4765 ----
- if (retlenp)
- *retlenp = (ret && *ret) ? strlen (ret) : 0;
- +
- + if (assignok)
- + parser_state |= PST_ASSIGNOK;
- +
- return ret;
- }
- *** 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 0
-
- #endif /* _PATCHLEVEL_H_ */
- --- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
- ! #define PATCHLEVEL 1
-
- #endif /* _PATCHLEVEL_H_ */
|