From: Chet Ramey Date: Fri, 2 Nov 2012 14:06:20 +0000 (-0400) Subject: Bash-4.2 patch 39 X-Git-Tag: bash-4.3~8 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=11d0fdf779380d2951b9ff0cc37a6872cb1a7438;p=platform%2Fupstream%2Fbash.git Bash-4.2 patch 39 --- 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_ */