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 | a88415cbf71a02cfe26647d1775b00044df262d1 (diff) | |
download | zsh-df5f825538720a9422859200d58d075d1dd075fc.tar.gz zsh-df5f825538720a9422859200d58d075d1dd075fc.tar.xz 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; } |