33614 (based on RedHat BZ-978613): signal safety when updating global state in execshfunc()

This commit is contained in:
Barton E. Schaefer 2014-11-06 10:50:20 -08:00
parent c7ff843ecf
commit 7abd611a23
2 changed files with 11 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2014-11-06 Barton E. Schaefer <schaefer@zsh.org>
* 33614 (based on RedHat BZ-978613): Src/exec.c: signal safety
when updating global state in execshfunc()
2014-11-05 Oliver Kiddle <opk@zsh.org>
* 33604: Src/Zle/zle_utils.c, Src/Zle/zle_vi.c, Test/X02zlevi.ztst:

View File

@ -4555,6 +4555,7 @@ execshfunc(Shfunc shf, LinkList args)
fputc('\n', xtrerr);
fflush(xtrerr);
}
queue_signals();
ocs = cmdstack;
ocsp = cmdsp;
cmdstack = (unsigned char *) zalloc(CMDSTACKSZ);
@ -4562,7 +4563,11 @@ execshfunc(Shfunc shf, LinkList args)
if ((osfc = sfcontext) == SFC_NONE)
sfcontext = SFC_DIRECT;
xtrerr = stderr;
unqueue_signals();
doshfunc(shf, args, 0);
queue_signals();
sfcontext = osfc;
free(cmdstack);
cmdstack = ocs;
@ -4570,6 +4575,7 @@ execshfunc(Shfunc shf, LinkList args)
if (!list_pipe)
deletefilelist(last_file_list, 0);
unqueue_signals();
}
/*