summaryrefslogtreecommitdiff
path: root/Src/cond.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/cond.c')
-rw-r--r--Src/cond.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/Src/cond.c b/Src/cond.c
index 42e9de30f..8ab019307 100644
--- a/Src/cond.c
+++ b/Src/cond.c
@@ -295,6 +295,8 @@ evalcond(Estate state, char *fromtest)
int test, npat = state->pc[1];
Patprog pprog = state->prog->pats[npat];
+ queue_signals();
+
if (pprog == dummy_patprog1 || pprog == dummy_patprog2) {
char *opat;
int save;
@@ -308,6 +310,7 @@ evalcond(Estate state, char *fromtest)
if (!(pprog = patcompile(right, (save ? PAT_ZDUP : PAT_STATIC),
NULL))) {
zwarnnam(fromtest, "bad pattern: %s", right);
+ unqueue_signals();
return 2;
}
else if (save)
@@ -316,6 +319,8 @@ evalcond(Estate state, char *fromtest)
state->pc += 2;
test = (pprog && pattry(pprog, left));
+ unqueue_signals();
+
return !(ctype == COND_STRNEQ ? !test : test);
}
case COND_STRLT: