Skip to content

Commit

Permalink
Revert "stop T_IN/OUT/INOUT/STDIO typemaps leaking"
Browse files Browse the repository at this point in the history
This reverts commit 50e5165.

That commit fixed the leak too well and instead introduced a potential
premature free.

This re-introduces the long-standing leak, which will be addressed post
5.22 release.

See RT #124181
  • Loading branch information
iabyn committed May 18, 2015
1 parent 33ca8d3 commit bae466e
Showing 1 changed file with 8 additions and 24 deletions.
32 changes: 8 additions & 24 deletions lib/ExtUtils/typemap
Expand Up @@ -388,48 +388,32 @@ T_STDIO
{
GV *gv = newGVgen("$Package");
PerlIO *fp = PerlIO_importFILE($var,0);
if ( fp && do_open(gv, "+<&", 3, FALSE, 0, 0, fp) ) {
SV *rv = newRV_noinc((SV*)gv);
rv = sv_bless(rv, gv_stashpv("$Package",1));
sv_setsv($arg, rv);
SvREFCNT_dec_NN(rv);
}
if ( fp && do_open(gv, "+<&", 3, FALSE, 0, 0, fp) )
sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
else
$arg = &PL_sv_undef;
}
T_IN
{
GV *gv = newGVgen("$Package");
if ( do_open(gv, "<&", 2, FALSE, 0, 0, $var) ) {
SV *rv = newRV_noinc((SV*)gv);
rv = sv_bless(rv, gv_stashpv("$Package",1));
sv_setsv($arg, rv);
SvREFCNT_dec_NN(rv);
}
if ( do_open(gv, "<&", 2, FALSE, 0, 0, $var) )
sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
else
$arg = &PL_sv_undef;
}
T_INOUT
{
GV *gv = newGVgen("$Package");
if ( do_open(gv, "+<&", 3, FALSE, 0, 0, $var) ) {
SV *rv = newRV_noinc((SV*)gv);
rv = sv_bless(rv, gv_stashpv("$Package",1));
sv_setsv($arg, rv);
SvREFCNT_dec_NN(rv);
}
if ( do_open(gv, "+<&", 3, FALSE, 0, 0, $var) )
sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
else
$arg = &PL_sv_undef;
}
T_OUT
{
GV *gv = newGVgen("$Package");
if ( do_open(gv, "+>&", 3, FALSE, 0, 0, $var) ) {
SV *rv = newRV_noinc((SV*)gv);
rv = sv_bless(rv, gv_stashpv("$Package",1));
sv_setsv($arg, rv);
SvREFCNT_dec_NN(rv);
}
if ( do_open(gv, "+>&", 3, FALSE, 0, 0, $var) )
sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
else
$arg = &PL_sv_undef;
}

0 comments on commit bae466e

Please sign in to comment.