summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChet Ramey <chet@caleb.ins.cwru.edu>2012-11-02 10:06:20 -0400
committerChet Ramey <chet@caleb.ins.cwru.edu>2012-11-02 10:06:20 -0400
commit11d0fdf779380d2951b9ff0cc37a6872cb1a7438 (patch)
tree6e44fa45d02556ce850446503b7f4e4ce7d236ec
parent0213a83a9e0b1eba0807102b1bfbee6f5009b493 (diff)
downloadbash-11d0fdf779380d2951b9ff0cc37a6872cb1a7438.tar.gz
Bash-4.2 patch 39
-rw-r--r--expr.c10
-rw-r--r--patchlevel.h2
2 files changed, 11 insertions, 1 deletions
diff --git a/expr.c b/expr.c
index 14cdca22..98d75b60 100644
--- a/expr.c
+++ b/expr.c
@@ -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_ */