hand apply whitespace mutiliated patch
[p5sagit/p5-mst-13.2.git] / scope.c
diff --git a/scope.c b/scope.c
index 4732fbe..5958aba 100644 (file)
--- a/scope.c
+++ b/scope.c
@@ -152,7 +152,7 @@ free_tmps(void)
     }
 }
 
-static SV *
+STATIC SV *
 save_scalar_at(SV **sptr)
 {
     dTHR;
@@ -222,6 +222,9 @@ save_gp(GV *gv, I32 empty)
 
     if (empty) {
        register GP *gp;
+
+       if (GvCVu(gv))
+           sub_generation++;   /* taking a method out of circulation */
        Newz(602, gp, 1, GP);
        GvGP(gv) = gp_ref(gp);
        GvSV(gv) = NEWSV(72,0);
@@ -483,7 +486,11 @@ save_list(register SV **sarg, I32 maxsarg)
 }
 
 void
+#ifdef PERL_OBJECT
+save_destructor(DESTRUCTORFUNC f, void* p)
+#else
 save_destructor(void (*f) (void *), void *p)
+#endif
 {
     dTHR;
     SSCHECK(3);
@@ -674,6 +681,8 @@ leave_scope(I32 base)
             SvLEN(gv) = (STRLEN)SSPOPIV;
             gp_free(gv);
             GvGP(gv) = (GP*)ptr;
+           if (GvCVu(gv))
+               sub_generation++;  /* putting a method back into circulation */
            SvREFCNT_dec(gv);
             break;
        case SAVEt_FREESV:
@@ -747,7 +756,7 @@ leave_scope(I32 base)
            break;
        case SAVEt_DESTRUCTOR:
            ptr = SSPOPPTR;
-           (*SSPOPDPTR)(ptr);
+           (CALLDESTRUCTOR)(ptr);
            break;
        case SAVEt_REGCONTEXT:
            i = SSPOPINT;