gv = (GV*)SvREFCNT_inc(newGVgen(packname));
hv_delete(GvSTASH(gv), GvNAME(gv), GvNAMELEN(gv), G_DISCARD);
if (do_open(gv, "+>&", 3, FALSE, 0, 0, fp)) {
- ST(0) = sv_2mortal(newRV_noinc((SV*)gv));
+ ST(0) = sv_2mortal(newRV((SV*)gv));
sv_bless(ST(0), gv_stashpv(packname, TRUE));
+ SvREFCNT_dec(gv); /* undo increment in newRV() */
}
else {
ST(0) = &sv_undef;