if (empty) {
register GP *gp;
Newz(602, gp, 1, GP);
- GvGP(gv) = gp;
- GvREFCNT(gv) = 1;
+ GvGP(gv) = gp_ref(gp);
GvSV(gv) = NEWSV(72,0);
GvLINE(gv) = curcop->cop_line;
GvEGV(gv) = gv;
}
else {
- GvGP(gv)->gp_refcnt++;
+ gp_ref(GvGP(gv));
GvINTRO_on(gv);
}
}
hv_clear((HV*)sv);
break;
case SVt_PVCV:
- sub_generation++;
- cv_undef((CV*)sv);
+ croak("panic: leave_scope pad code");
+ case SVt_RV:
+ case SVt_IV:
+ case SVt_NV:
+ (void)SvOK_off(sv);
break;
default:
- if (SvPOK(sv) && SvLEN(sv))
- (void)SvOOK_off(sv);
(void)SvOK_off(sv);
+ (void)SvOOK_off(sv);
break;
}
}