Re: Making IO::Socket pass test on Win32
[p5sagit/p5-mst-13.2.git] / pad.c
diff --git a/pad.c b/pad.c
index 10c82c5..2d2bade 100644 (file)
--- a/pad.c
+++ b/pad.c
@@ -113,7 +113,12 @@ to be generated in evals, such as
 
 #define PAD_MAX 999999999
 
-
+#ifdef PERL_MAD
+void pad_peg(const char* s) {
+    static int pegcnt;
+    pegcnt++;
+}
+#endif
 
 /*
 =for apidoc pad_new
@@ -233,6 +238,7 @@ Perl_pad_undef(pTHX_ CV* cv)
     I32 ix;
     const PADLIST * const padlist = CvPADLIST(cv);
 
+    pad_peg("pad_undef");
     if (!padlist)
        return;
     if (SvIS_FREED(padlist)) /* may be during global destruction */
@@ -281,7 +287,7 @@ Perl_pad_undef(pTHX_ CV* cv)
                        CvWEAKOUTSIDE_off(innercv);
                        CvOUTSIDE(innercv) = outercv;
                        CvOUTSIDE_SEQ(innercv) = seq;
-                       SvREFCNT_inc_void_NN(outercv);
+                       SvREFCNT_inc_simple_void_NN(outercv);
                    }
                    else {
                        CvOUTSIDE(innercv) = NULL;
@@ -346,7 +352,7 @@ Perl_pad_add_name(pTHX_ const char *name, HV* typestash, HV* ourstash, bool fake
     if (ourstash) {
        SvPAD_OUR_on(namesv);
        OURSTASH_set(namesv, ourstash);
-       SvREFCNT_inc_void_NN(ourstash);
+       SvREFCNT_inc_simple_void_NN(ourstash);
     }
 
     av_store(PL_comppad_name, offset, namesv);
@@ -468,6 +474,7 @@ Perl_pad_add_anon(pTHX_ SV* sv, OPCODE op_type)
     dVAR;
     PADOFFSET ix;
     SV* const name = newSV(0);
+    pad_peg("add_anon");
     sv_upgrade(name, SVt_PVNV);
     sv_setpvn(name, "&", 1);
     SvIV_set(name, -1);
@@ -584,6 +591,7 @@ Perl_pad_findmy(pTHX_ const char *name)
     const AV *nameav;
     SV **name_svp;
 
+    pad_peg("pad_findmy");
     offset =  pad_findlex(name, PL_compcv, PL_cop_seqmax, 1,
                NULL, &out_sv, &out_flags);
     if (offset != NOT_IN_PAD) 
@@ -1485,7 +1493,7 @@ Perl_cv_clone(pTHX_ CV *proto)
                }
                else {
                    assert(!SvPADSTALE(sv));
-                   SvREFCNT_inc_simple_void(sv);
+                   SvREFCNT_inc_simple_void_NN(sv);
                }
            }
            if (!sv) {
@@ -1502,7 +1510,7 @@ Perl_cv_clone(pTHX_ CV *proto)
            }
        }
        else if (IS_PADGV(ppad[ix]) || IS_PADCONST(ppad[ix])) {
-           sv = SvREFCNT_inc(ppad[ix]);
+           sv = SvREFCNT_inc_NN(ppad[ix]);
        }
        else {
            sv = newSV(0);
@@ -1618,7 +1626,7 @@ Perl_pad_push(pTHX_ PADLIST *padlist, int depth)
                }
            }
            else if (IS_PADGV(oldpad[ix]) || IS_PADCONST(oldpad[ix])) {
-               av_store(newpad, ix, SvREFCNT_inc(oldpad[ix]));
+               av_store(newpad, ix, SvREFCNT_inc_NN(oldpad[ix]));
            }
            else {
                /* save temporaries on recursion? */