From 11d0fdf779380d2951b9ff0cc37a6872cb1a7438 Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Fri, 2 Nov 2012 10:06:20 -0400 Subject: [PATCH 1/1] Bash-4.2 patch 39 --- expr.c | 10 ++++++++++ patchlevel.h | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/expr.c b/expr.c index 14cdca2..98d75b6 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 99d2ea2..7193c0c 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_ */ -- 2.7.4