Change 27740 by [EMAIL PROTECTED] on 2006/04/08 14:46:53

        By swapping the order of pushes onto the save stack for
        SAVEt_GENERIC_PVREF, we can merge it with SAVEt_PPTR in Perl_ss_dup().

Affected files ...

... //depot/perl/scope.c#185 edit
... //depot/perl/sv.c#1227 edit

Differences ...

==== //depot/perl/scope.c#185 (text) ====
Index: perl/scope.c
--- perl/scope.c#184~27732~     2006-04-06 08:52:37.000000000 -0700
+++ perl/scope.c        2006-04-08 07:46:53.000000000 -0700
@@ -226,8 +226,8 @@
 {
     dVAR;
     SSCHECK(3);
-    SSPUSHPTR(str);
     SSPUSHPTR(*str);
+    SSPUSHPTR(str);
     SSPUSHINT(SAVEt_GENERIC_PVREF);
 }
 
@@ -643,8 +643,8 @@
                SvREFCNT_dec(av);
            break;
        case SAVEt_GENERIC_PVREF:               /* generic pv */
-           str = (char*)SSPOPPTR;
            ptr = SSPOPPTR;
+           str = (char*)SSPOPPTR;
            if (*(char**)ptr != str) {
                Safefree(*(char**)ptr);
                *(char**)ptr = str;

==== //depot/perl/sv.c#1227 (text) ====
Index: perl/sv.c
--- perl/sv.c#1226~27739~       2006-04-08 06:43:46.000000000 -0700
+++ perl/sv.c   2006-04-08 07:46:53.000000000 -0700
@@ -10382,12 +10382,6 @@
            gv = (GV*)POPPTR(ss,ix);
            TOPPTR(nss,ix) = gv_dup_inc(gv, param);
            break;
-       case SAVEt_GENERIC_PVREF:               /* generic char* */
-           c = (char*)POPPTR(ss,ix);
-           TOPPTR(nss,ix) = pv_dup(c);
-           ptr = POPPTR(ss,ix);
-           TOPPTR(nss,ix) = any_dup(ptr, proto_perl);
-           break;
        case SAVEt_SHARED_PVREF:                /* char* in shared space */
            c = (char*)POPPTR(ss,ix);
            TOPPTR(nss,ix) = savesharedpv(c);
@@ -10452,6 +10446,7 @@
            ptr = POPPTR(ss,ix);
            TOPPTR(nss,ix) = any_dup(ptr, proto_perl);
            break;
+       case SAVEt_GENERIC_PVREF:               /* generic char* */
        case SAVEt_PPTR:                        /* char* reference */
            ptr = POPPTR(ss,ix);
            TOPPTR(nss,ix) = any_dup(ptr, proto_perl);
End of Patch.

Reply via email to