diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Src/exec.c | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog index e92c7b24d..f9592dd8b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2016-09-19 Barton E. Schaefer <schaefer@zsh.org> + + * 39381: Src/exec.c: handle save/restore of variable values when + "typeset"-related reserved words are prefixed by an assignment + 2016-09-19 Mikael Magnusson <mikachu@gmail.com> * 39351: Functions/Zle/bracketed-paste-url-magic: Handle magnet diff --git a/Src/exec.c b/Src/exec.c index 9a7234e5f..d924148d6 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -3543,7 +3543,7 @@ execcmd(Estate state, int input, int output, int how, int last1) * if it's got "command" in front. * If it's a normal command --- save. */ - if (is_shfunc || (hn->flags & BINF_PSPECIAL)) + if (is_shfunc || (hn->flags & (BINF_PSPECIAL|BINF_ASSIGN))) do_save = (orig_cflags & BINF_COMMAND); else do_save = 1; @@ -3552,7 +3552,7 @@ execcmd(Estate state, int input, int output, int how, int last1) * Save if it's got "command" in front or it's * not a magic-equals assignment. */ - if ((cflags & BINF_COMMAND) || !assign) + if ((cflags & (BINF_COMMAND|BINF_ASSIGN)) || !assign) do_save = 1; } if (do_save && varspc) |