Change 33034 by [EMAIL PROTECTED] on 2008/01/21 17:21:40

        In struct block_subst, access the member once via a macro CxONCE()
        which will allow the storage location to be changed.

Affected files ...

... //depot/perl/cop.h#162 edit
... //depot/perl/pp_ctl.c#666 edit
... //depot/perl/scope.c#216 edit

Differences ...

==== //depot/perl/cop.h#162 (text) ====
Index: perl/cop.h
--- perl/cop.h#161~33032~       2008-01-21 08:15:58.000000000 -0800
+++ perl/cop.h  2008-01-21 09:21:40.000000000 -0800
@@ -650,6 +650,8 @@
        rxres_save(&cx->sb_rxres, rx);                                  \
        (void)ReREFCNT_inc(rx)
 
+#define CxONCE(cx)             (0 + cx->sb_once)
+
 #define POPSUBST(cx) cx = &cxstack[cxstack_ix--];                      \
        rxres_free(&cx->sb_rxres);                                      \
        ReREFCNT_dec(cx->sb_rx)

==== //depot/perl/pp_ctl.c#666 (text) ====
Index: perl/pp_ctl.c
--- perl/pp_ctl.c#665~33029~    2008-01-21 07:14:35.000000000 -0800
+++ perl/pp_ctl.c       2008-01-21 09:21:40.000000000 -0800
@@ -234,7 +234,7 @@
        FREETMPS; /* Prevent excess tmp stack */
 
        /* Are we done */
-       if (cx->sb_once || !CALLREGEXEC(rx, s, cx->sb_strend, orig,
+       if (CxONCE(cx) || !CALLREGEXEC(rx, s, cx->sb_strend, orig,
                                     s == m, cx->sb_targ, NULL,
                                     ((cx->sb_rflags & REXEC_COPY_STR)
                                      ? (REXEC_IGNOREPOS|REXEC_NOT_FIRST)

==== //depot/perl/scope.c#216 (text) ====
Index: perl/scope.c
--- perl/scope.c#215~33029~     2008-01-21 07:14:35.000000000 -0800
+++ perl/scope.c        2008-01-21 09:21:40.000000000 -0800
@@ -1112,7 +1112,7 @@
        PerlIO_printf(Perl_debug_log, "SB_RFLAGS = %ld\n",
                (long)cx->sb_rflags);
        PerlIO_printf(Perl_debug_log, "SB_ONCE = %ld\n",
-               (long)cx->sb_once);
+               (long)CxONCE(cx));
        PerlIO_printf(Perl_debug_log, "SB_ORIG = %s\n",
                cx->sb_orig);
        PerlIO_printf(Perl_debug_log, "SB_DSTR = 0x%"UVxf"\n",
End of Patch.

Reply via email to