Change 33029 by [EMAIL PROTECTED] on 2008/01/21 15:14:35

               In struct block_eval, access the members old_in_eval and 
old_op_type
               via macros CxOLD_IN_EVAL() and CxOLD_OP_TYPE(), which will allow 
the
        storage location to be changed.

Affected files ...

... //depot/perl/cop.h#159 edit
... //depot/perl/pp_ctl.c#665 edit
... //depot/perl/scope.c#215 edit

Differences ...

==== //depot/perl/cop.h#159 (text) ====
Index: perl/cop.h
--- perl/cop.h#158~33028~       2008-01-21 06:45:56.000000000 -0800
+++ perl/cop.h  2008-01-21 07:14:35.000000000 -0800
@@ -402,6 +402,9 @@
     JMPENV *   cur_top_env; /* value of PL_top_env when eval CX created */
 };
 
+#define CxOLD_IN_EVAL(cx)      (0 + (cx)->blk_eval.old_in_eval)
+#define CxOLD_OP_TYPE(cx)      (0 + (cx)->blk_eval.old_op_type)
+
 #define PUSHEVAL(cx,n,fgv)                                             \
     STMT_START {                                                       \
        cx->blk_eval.old_in_eval = PL_in_eval;                          \
@@ -416,8 +419,8 @@
 
 #define POPEVAL(cx)                                                    \
     STMT_START {                                                       \
-       PL_in_eval = cx->blk_eval.old_in_eval;                          \
-       optype = cx->blk_eval.old_op_type;                              \
+       PL_in_eval = CxOLD_IN_EVAL(cx);                                 \
+       optype = CxOLD_OP_TYPE(cx);                                     \
        PL_eval_root = cx->blk_eval.old_eval_root;                      \
        if (cx->blk_eval.old_namesv)                                    \
            sv_2mortal(cx->blk_eval.old_namesv);                        \

==== //depot/perl/pp_ctl.c#665 (text) ====
Index: perl/pp_ctl.c
--- perl/pp_ctl.c#664~33024~    2008-01-21 03:49:38.000000000 -0800
+++ perl/pp_ctl.c       2008-01-21 07:14:35.000000000 -0800
@@ -1672,7 +1672,7 @@
        PUSHs(boolSV((gimme & G_WANT) == G_ARRAY));
     if (CxTYPE(cx) == CXt_EVAL) {
        /* eval STRING */
-       if (cx->blk_eval.old_op_type == OP_ENTEREVAL) {
+       if (CxOLD_OP_TYPE(cx) == OP_ENTEREVAL) {
            PUSHs(cx->blk_eval.cur_text);
            PUSHs(&PL_sv_no);
        }
@@ -2437,7 +2437,7 @@
            else {
                AV* const padlist = CvPADLIST(cv);
                if (CxTYPE(cx) == CXt_EVAL) {
-                   PL_in_eval = cx->blk_eval.old_in_eval;
+                   PL_in_eval = CxOLD_IN_EVAL(cx);
                    PL_eval_root = cx->blk_eval.old_eval_root;
                    cx->cx_type = CXt_SUB;
                }

==== //depot/perl/scope.c#215 (text) ====
Index: perl/scope.c
--- perl/scope.c#214~33017~     2008-01-20 13:50:31.000000000 -0800
+++ perl/scope.c        2008-01-21 07:14:35.000000000 -0800
@@ -1070,10 +1070,10 @@
        break;
     case CXt_EVAL:
        PerlIO_printf(Perl_debug_log, "BLK_EVAL.OLD_IN_EVAL = %ld\n",
-               (long)cx->blk_eval.old_in_eval);
+               (long)CxOLD_IN_EVAL(cx));
        PerlIO_printf(Perl_debug_log, "BLK_EVAL.OLD_OP_TYPE = %s (%s)\n",
-               PL_op_name[cx->blk_eval.old_op_type],
-               PL_op_desc[cx->blk_eval.old_op_type]);
+               PL_op_name[CxOLD_OP_TYPE(cx)],
+               PL_op_desc[CxOLD_OP_TYPE(cx)]);
        if (cx->blk_eval.old_namesv)
            PerlIO_printf(Perl_debug_log, "BLK_EVAL.OLD_NAME = %s\n",
                          SvPVX_const(cx->blk_eval.old_namesv));
End of Patch.

Reply via email to