From: Nicholas Clark Date: Sun, 18 Apr 2010 12:24:20 +0000 (+0100) Subject: Move PERL_ASYNC_CHECK() from POPBLOCK() to the kill case of Perl_apply(). X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=8165faea6ee20f11c287f0f531d49cc63ea9e6f3;p=p5sagit%2Fp5-mst-13.2.git 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. --- diff --git a/cop.h b/cop.h index 420a5d1..6c51d73 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 eba7b54..98861af 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: