diff options
author | Chet Ramey <chet@caleb.ins.cwru.edu> | 2012-11-02 10:06:20 -0400 |
---|---|---|
committer | Chet Ramey <chet@caleb.ins.cwru.edu> | 2012-11-02 10:06:20 -0400 |
commit | 11d0fdf779380d2951b9ff0cc37a6872cb1a7438 (patch) | |
tree | 6e44fa45d02556ce850446503b7f4e4ce7d236ec | |
parent | 0213a83a9e0b1eba0807102b1bfbee6f5009b493 (diff) | |
download | bash-11d0fdf779380d2951b9ff0cc37a6872cb1a7438.tar.gz |
Bash-4.2 patch 39
-rw-r--r-- | expr.c | 10 | ||||
-rw-r--r-- | patchlevel.h | 2 |
2 files changed, 11 insertions, 1 deletions
@@ -1009,6 +1009,12 @@ expr_streval (tok, e, lvalue) arrayind_t ind; #endif +/*itrace("expr_streval: %s: noeval = %d", tok, noeval);*/ + /* If we are suppressing evaluation, just short-circuit here instead of + going through the rest of the evaluator. */ + if (noeval) + return (0); + /* [[[[[ */ #if defined (ARRAY_VARS) v = (e == ']') ? array_variable_part (tok, (char **)0, (int *)0) : find_variable (tok); @@ -1182,6 +1188,10 @@ readtok () #endif /* ARRAY_VARS */ *cp = '\0'; + /* XXX - watch out for pointer aliasing issues here */ + if (curlval.tokstr && curlval.tokstr == tokstr) + init_lvalue (&curlval); + FREE (tokstr); tokstr = savestring (tp); *cp = c; diff --git a/patchlevel.h b/patchlevel.h index 99d2ea25..7193c0c2 100644 --- a/patchlevel.h +++ b/patchlevel.h @@ -25,6 +25,6 @@ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh looks for to find the patch level (for the sccs version string). */ -#define PATCHLEVEL 38 +#define PATCHLEVEL 39 #endif /* _PATCHLEVEL_H_ */ |