diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | Src/loop.c | 6 |
2 files changed, 6 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index 4e79faae4..07ee44a2e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2014-04-20 Barton E. Schaefer <schaefer@zsh.org> + * 32569: Src/loop.c: lastval ($?) should not be reset between + word list substitution and loop body execution in for/select. + * 32568: Src/exec.c, Src/loop.c: consistency in handling of errflag condition during substitutions in for/select word lists, function definition name position, and anonymous function argument lists. diff --git a/Src/loop.c b/Src/loop.c index dc8f2320f..2f639fd5a 100644 --- a/Src/loop.c +++ b/Src/loop.c @@ -73,7 +73,7 @@ execfor(Estate state, int do_exec) matheval(str); if (errflag) { state->pc = end; - return lastval = errflag; + return 1; } cond = ecgetstr(state, EC_NODUP, &ctok); advance = ecgetstr(state, EC_NODUP, &atok); @@ -102,7 +102,7 @@ execfor(Estate state, int do_exec) addlinknode(args, dupstring(*x)); } } - lastval = 0; + /* lastval = 0; */ loops++; pushheap(); cmdpush(CS_FOR); @@ -241,7 +241,7 @@ execselect(Estate state, UNUSED(int do_exec)) return 1; } loops++; - lastval = 0; + /* lastval = 0; */ pushheap(); cmdpush(CS_SELECT); usezle = interact && SHTTY != -1 && isset(USEZLE); |