This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
alarm() on Windows cannot interrupt blocking I/O
[perl5.git] / cc_runtime.h
index 799bf46..90826df 100644 (file)
@@ -1,3 +1,12 @@
+/*    cc_runtime.h
+ *
+ *    Copyright (C) 1999, 2000, 2001, 2004, 2006, 2008 by Larry Wall and others
+ *
+ *    You may distribute under the terms of either the GNU General Public
+ *    License or the Artistic License, as specified in the README file.
+ *
+ */
+
 #define DOOP(ppname) PUTBACK; PL_op = ppname(aTHX); SPAGAIN
 #define CCPP(s)   OP * s(pTHX)
 
@@ -45,8 +54,8 @@
        switch (ret) {                          \
        case 0:                                 \
            PL_op = ppaddr(aTHX);               \
-           PL_retstack[PL_retstack_ix - 1] = Nullop;   \
-           if (PL_op != nxt) CALLRUNOPS();             \
+            cxstack[cxstack_ix].blk_eval.retop = Nullop; \
+           if (PL_op != nxt) CALLRUNOPS(aTHX); \
            JMPENV_POP;                         \
            break;                              \
        case 1: JMPENV_POP; JMPENV_JUMP(1);     \
        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