X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=cc_runtime.h;h=90826dfb0e0b7c6528290eb9ead8f714918bdc11;hb=9e5bbba0de25c01ae9355c7a97e237602a37e9f3;hp=b384fd270355ebaa3ea8513826ae75de72a9cdd7;hpb=1129b882ced9d5881a47214405219a2e6e332a92;p=p5sagit%2Fp5-mst-13.2.git diff --git a/cc_runtime.h b/cc_runtime.h index b384fd2..90826df 100644 --- a/cc_runtime.h +++ b/cc_runtime.h @@ -54,6 +54,7 @@ switch (ret) { \ case 0: \ PL_op = ppaddr(aTHX); \ + cxstack[cxstack_ix].blk_eval.retop = Nullop; \ if (PL_op != nxt) CALLRUNOPS(aTHX); \ JMPENV_POP; \ break; \ @@ -68,16 +69,17 @@ SPAGAIN; \ } while (0) - -#define PP_ENTERTRY(jmpbuf,label) \ +#define PP_ENTERTRY(label) \ STMT_START { \ - int ret; \ - JMPENV_PUSH_ENV(jmpbuf,ret); \ - switch (ret) { \ - case 1: JMPENV_POP_ENV(jmpbuf); JMPENV_JUMP(1);\ - case 2: JMPENV_POP_ENV(jmpbuf); JMPENV_JUMP(2);\ - case 3: JMPENV_POP_ENV(jmpbuf); SPAGAIN; goto label;\ - } \ + dJMPENV; \ + int ret; \ + JMPENV_PUSH(ret); \ + switch (ret) { \ + case 1: JMPENV_POP; JMPENV_JUMP(1);\ + case 2: JMPENV_POP; JMPENV_JUMP(2);\ + case 3: JMPENV_POP; SPAGAIN; goto label;\ + } \ } STMT_END + #define PP_LEAVETRY \ STMT_START{ PL_top_env=PL_top_env->je_prev; }STMT_END