Change 33641 by [EMAIL PROTECTED] on 2008/04/03 16:39:03

        Integrate:
        [ 32822]
        Subject: Re: SV leak?
        From: Vincent Pit <[EMAIL PROTECTED]>
        Date: Thu, 03 Jan 2008 19:26:05 +0100
        Message-ID: <[EMAIL PROTECTED]>
        
        Mortalize SVs that are being pushed on the stack.
        Try to use specialized macros for pushing mortals.

Affected files ...

... //depot/maint-5.10/perl/ext/B/B.xs#6 integrate
... //depot/maint-5.10/perl/ext/Win32/Win32.xs#3 integrate
... //depot/maint-5.10/perl/mg.c#6 integrate
... //depot/maint-5.10/perl/os2/os2.c#4 integrate
... //depot/maint-5.10/perl/pp_sys.c#4 integrate
... //depot/maint-5.10/perl/win32/wince.c#3 integrate

Differences ...

==== //depot/maint-5.10/perl/ext/B/B.xs#6 (text) ====
Index: perl/ext/B/B.xs
--- perl/ext/B/B.xs#5~33161~    2008-01-31 14:14:13.000000000 -0800
+++ perl/ext/B/B.xs     2008-04-03 09:39:03.000000000 -0700
@@ -2013,7 +2013,7 @@
            (void)hv_iterinit(hv);
            EXTEND(sp, HvKEYS(hv) * 2);
            while ((sv = hv_iternextsv(hv, &key, &len))) {
-               PUSHs(newSVpvn(key, len));
+               mPUSHp(key, len);
                PUSHs(make_sv_object(aTHX_ sv_newmortal(), sv));
            }
        }

==== //depot/maint-5.10/perl/ext/Win32/Win32.xs#3 (text) ====
Index: perl/ext/Win32/Win32.xs
--- perl/ext/Win32/Win32.xs#2~33590~    2008-03-28 12:01:33.000000000 -0700
+++ perl/ext/Win32/Win32.xs     2008-04-03 09:39:03.000000000 -0700
@@ -1245,17 +1245,17 @@
     if (GIMME_V == G_SCALAR) {
         XSRETURN_IV(g_osver.dwPlatformId);
     }
-    XPUSHs(newSVpvn(g_osver.szCSDVersion, strlen(g_osver.szCSDVersion)));
+    mXPUSHp(g_osver.szCSDVersion, strlen(g_osver.szCSDVersion));
 
-    XPUSHs(newSViv(g_osver.dwMajorVersion));
-    XPUSHs(newSViv(g_osver.dwMinorVersion));
-    XPUSHs(newSViv(g_osver.dwBuildNumber));
-    XPUSHs(newSViv(g_osver.dwPlatformId));
+    mXPUSHi(g_osver.dwMajorVersion);
+    mXPUSHi(g_osver.dwMinorVersion);
+    mXPUSHi(g_osver.dwBuildNumber);
+    mXPUSHi(g_osver.dwPlatformId);
     if (g_osver_ex) {
-        XPUSHs(newSViv(g_osver.wServicePackMajor));
-        XPUSHs(newSViv(g_osver.wServicePackMinor));
-        XPUSHs(newSViv(g_osver.wSuiteMask));
-        XPUSHs(newSViv(g_osver.wProductType));
+        mXPUSHi(g_osver.wServicePackMajor);
+        mXPUSHi(g_osver.wServicePackMinor);
+        mXPUSHi(g_osver.wSuiteMask);
+        mXPUSHi(g_osver.wProductType);
     }
     PUTBACK;
 }

==== //depot/maint-5.10/perl/mg.c#6 (text) ====
Index: perl/mg.c
--- perl/mg.c#5~33139~  2008-01-30 15:19:42.000000000 -0800
+++ perl/mg.c   2008-04-03 09:39:03.000000000 -0700
@@ -2902,7 +2902,7 @@
 #endif
                   EXTEND(SP, 2);
                   PUSHs((SV*)rv);
-                  PUSHs(newSVpvn((char *)sip, sizeof(*sip)));
+                  mPUSHp((char *)sip, sizeof(*sip));
              }
 
         }

==== //depot/maint-5.10/perl/os2/os2.c#4 (text) ====
Index: perl/os2/os2.c
--- perl/os2/os2.c#3~33121~     2008-01-30 03:03:49.000000000 -0800
+++ perl/os2/os2.c      2008-04-03 09:39:03.000000000 -0700
@@ -4360,10 +4360,10 @@
                                      &PipeState), "DosPeekNPipe() for state");
            if (state) {
                EXTEND(SP, 3);
-               PUSHs(newSVuv(PipeState));
+               mPUSHu(PipeState);
                /*   Bytes (available/in-message) */
-               PUSHs(newSViv(BytesAvail.cbpipe));
-               PUSHs(newSViv(BytesAvail.cbmessage));
+               mPUSHi(BytesAvail.cbpipe);
+               mPUSHi(BytesAvail.cbmessage);
                XSRETURN(3);
            } else if (info) {
                /* L S S C C C/Z*
@@ -4390,12 +4390,12 @@
                else
                    size = strlen(b.pInfo.szName);
                EXTEND(SP, 6);
-               PUSHs(newSVpvn(b.pInfo.szName, size));
-               PUSHs(newSVuv(b.id));
-               PUSHs(newSViv(b.pInfo.cbOut));
-               PUSHs(newSViv(b.pInfo.cbIn));
-               PUSHs(newSViv(b.pInfo.cbMaxInst));
-               PUSHs(newSViv(b.pInfo.cbCurInst));
+               mPUSHp(b.pInfo.szName, size);
+               mPUSHu(b.id);
+               mPUSHi(b.pInfo.cbOut);
+               mPUSHi(b.pInfo.cbIn);
+               mPUSHi(b.pInfo.cbMaxInst);
+               mPUSHi(b.pInfo.cbCurInst);
                XSRETURN(6);
            } else if (BytesAvail.cbpipe == 0) {
                XSRETURN_NO;

==== //depot/maint-5.10/perl/pp_sys.c#4 (text) ====
Index: perl/pp_sys.c
--- perl/pp_sys.c#3~33139~      2008-01-30 15:19:42.000000000 -0800
+++ perl/pp_sys.c       2008-04-03 09:39:03.000000000 -0700
@@ -4700,7 +4700,7 @@
        }
 #else
        if (hent->h_addr)
-           PUSHs(newSVpvn(hent->h_addr, len));
+           mPUSHp(hent->h_addr, len);
        else
            PUSHs(sv_mortalcopy(&PL_sv_no));
 #endif /* h_addr */

==== //depot/maint-5.10/perl/win32/wince.c#3 (text) ====
Index: perl/win32/wince.c
--- perl/win32/wince.c#2~33121~ 2008-01-30 03:03:49.000000000 -0800
+++ perl/win32/wince.c  2008-04-03 09:39:03.000000000 -0700
@@ -2440,12 +2440,12 @@
     if (!XCEGetVersionExA(&osver)) {
       XSRETURN_EMPTY;
     }
-    XPUSHs(newSVpvn(osver.szCSDVersion, strlen(osver.szCSDVersion)));
-    XPUSHs(newSViv(osver.dwMajorVersion));
-    XPUSHs(newSViv(osver.dwMinorVersion));
-    XPUSHs(newSViv(osver.dwBuildNumber));
+    mXPUSHp(osver.szCSDVersion, strlen(osver.szCSDVersion));
+    mXPUSHi(osver.dwMajorVersion);
+    mXPUSHi(osver.dwMinorVersion);
+    mXPUSHi(osver.dwBuildNumber);
     /* WINCE = 3 */
-    XPUSHs(newSViv(osver.dwPlatformId));
+    mXPUSHi(osver.dwPlatformId);
     PUTBACK;
 }
 
@@ -2554,15 +2554,15 @@
       XSRETURN_EMPTY;
     }
 
-  XPUSHs(newSViv(sps.ACLineStatus));
-  XPUSHs(newSViv(sps.BatteryFlag));
-  XPUSHs(newSViv(sps.BatteryLifePercent));
-  XPUSHs(newSViv(sps.BatteryLifeTime));
-  XPUSHs(newSViv(sps.BatteryFullLifeTime));
-  XPUSHs(newSViv(sps.BackupBatteryFlag));
-  XPUSHs(newSViv(sps.BackupBatteryLifePercent));
-  XPUSHs(newSViv(sps.BackupBatteryLifeTime));
-  XPUSHs(newSViv(sps.BackupBatteryFullLifeTime));
+  mXPUSHi(sps.ACLineStatus);
+  mXPUSHi(sps.BatteryFlag);
+  mXPUSHi(sps.BatteryLifePercent);
+  mXPUSHi(sps.BatteryLifeTime);
+  mXPUSHi(sps.BatteryFullLifeTime);
+  mXPUSHi(sps.BackupBatteryFlag);
+  mXPUSHi(sps.BackupBatteryLifePercent);
+  mXPUSHi(sps.BackupBatteryLifeTime);
+  mXPUSHi(sps.BackupBatteryFullLifeTime);
 
   PUTBACK;
 }
End of Patch.

Reply via email to