summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2010-04-18 13:24:20 +0100
committerNicholas Clark <nick@ccl4.org>2010-04-18 13:24:20 +0100
commit8165faea6ee20f11c287f0f531d49cc63ea9e6f3 (patch)
treeaf2df3167c92fa5f6b819f7cabaf152f274cdee2
parentda76b8593eec70dc736daf75a7180d2cb0bd0f1f (diff)
downloadperl-8165faea6ee20f11c287f0f531d49cc63ea9e6f3.tar.gz
Move PERL_ASYNC_CHECK() from POPBLOCK() to the kill case of Perl_apply().
This ensures that (safe) signals sent to the same process are still dispatched within the same statement (as before), without overloading the semantics of block popping.
-rw-r--r--cop.h1
-rw-r--r--doio.c2
2 files changed, 2 insertions, 1 deletions
diff --git a/cop.h b/cop.h
index 420a5d1790..6c51d73285 100644
--- a/cop.h
+++ b/cop.h
@@ -592,7 +592,6 @@ struct block {
/* Exit a block (RETURN and LAST). */
#define POPBLOCK(cx,pm) \
DEBUG_CX("POP"); \
- PERL_ASYNC_CHECK(); \
cx = &cxstack[cxstack_ix--], \
newsp = PL_stack_base + cx->blk_oldsp, \
PL_curcop = cx->blk_oldcop, \
diff --git a/doio.c b/doio.c
index eba7b54931..98861af131 100644
--- a/doio.c
+++ b/doio.c
@@ -1740,6 +1740,7 @@ nothing in the core.
}
}
}
+ PERL_ASYNC_CHECK();
break;
}
#endif
@@ -1770,6 +1771,7 @@ nothing in the core.
tot--;
}
}
+ PERL_ASYNC_CHECK();
break;
#endif
case OP_UNLINK: