diff options
| author | Barton E. Schaefer <schaefer@zsh.org> | 2015-08-09 17:37:23 -0700 |
|---|---|---|
| committer | Barton E. Schaefer <schaefer@zsh.org> | 2015-08-09 17:37:23 -0700 |
| commit | df5f825538720a9422859200d58d075d1dd075fc (patch) | |
| tree | 863d88901575ff33b0fc90db54404e32e75098db /Src/pattern.c | |
| parent | 36026: zero freed pointers in zftp cleanup_() in case the module is re-loaded... (diff) | |
| download | zsh-df5f825538720a9422859200d58d075d1dd075fc.tar zsh-df5f825538720a9422859200d58d075d1dd075fc.tar.gz zsh-df5f825538720a9422859200d58d075d1dd075fc.tar.bz2 zsh-df5f825538720a9422859200d58d075d1dd075fc.tar.lz zsh-df5f825538720a9422859200d58d075d1dd075fc.tar.xz zsh-df5f825538720a9422859200d58d075d1dd075fc.tar.zst zsh-df5f825538720a9422859200d58d075d1dd075fc.zip | |
36033: a few more queue_signals() to protect global state changes
Diffstat (limited to 'Src/pattern.c')
| -rw-r--r-- | Src/pattern.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/Src/pattern.c b/Src/pattern.c index 8fa1a727f..7d38988a0 100644 --- a/Src/pattern.c +++ b/Src/pattern.c @@ -520,6 +520,8 @@ patcompile(char *exp, int inflags, char **endexp) char *lng, *strp = NULL; Patprog p; + queue_signals(); + startoff = sizeof(struct patprog); /* Ensure alignment of start of program string */ startoff = (startoff + sizeof(union upat) - 1) & ~(sizeof(union upat) - 1); @@ -582,8 +584,10 @@ patcompile(char *exp, int inflags, char **endexp) if (!strp || (*strp && *strp != '/')) { /* No, do normal compilation. */ strp = NULL; - if (patcompswitch(0, &flags) == 0) + if (patcompswitch(0, &flags) == 0) { + unqueue_signals(); return NULL; + } } else { /* * Yes, copy the string, and skip compilation altogether. @@ -715,6 +719,8 @@ patcompile(char *exp, int inflags, char **endexp) if (endexp) *endexp = patparse; + + unqueue_signals(); return p; } |
