Change 35004 by [EMAIL PROTECTED] on 2008/12/04 00:32:41 Integrate: [ 34025] Fix for bug [perl #54934] Attempt to free unreferenced scalar fiddling with the symbol table Keep the refcount of the globs generated by PerlIO::via balanced. [ 34026] Small typo fix. [ 34779] Make sure PerlIO::via doesn't leave its old GV's hanging in the stash they were created in. Steal the idea from IO::File to just delete the stash entry after creating the GV. This fixes perl #59268.
Affected files ... ... //depot/maint-5.10/perl/ext/PerlIO/via/via.pm#3 integrate ... //depot/maint-5.10/perl/ext/PerlIO/via/via.xs#3 integrate Differences ... ==== //depot/maint-5.10/perl/ext/PerlIO/via/via.pm#3 (text) ==== Index: perl/ext/PerlIO/via/via.pm --- perl/ext/PerlIO/via/via.pm#2~33640~ 2008-04-03 09:03:24.000000000 -0700 +++ perl/ext/PerlIO/via/via.pm 2008-12-03 16:32:41.000000000 -0800 @@ -1,5 +1,5 @@ package PerlIO::via; -our $VERSION = '0.05'; +our $VERSION = '0.07'; use XSLoader (); XSLoader::load 'PerlIO::via'; 1; @@ -150,7 +150,7 @@ =item $obj->TELL($fh) -Returns file postion. +Returns file position. Optional. Default to be determined. =item $obj->UNREAD($buffer,$fh) @@ -228,7 +228,7 @@ 1; -the following code opens up an output handle that will convert any +The following code opens up an output handle that will convert any output to hexadecimal dump of the output bytes: for example "A" will be converted to "41" (on ASCII-based machines, on EBCDIC platforms the "A" will become "c1") ==== //depot/maint-5.10/perl/ext/PerlIO/via/via.xs#3 (text) ==== Index: perl/ext/PerlIO/via/via.xs --- perl/ext/PerlIO/via/via.xs#2~33161~ 2008-01-31 14:14:13.000000000 -0800 +++ perl/ext/PerlIO/via/via.xs 2008-12-03 16:32:41.000000000 -0800 @@ -89,8 +89,12 @@ if (!s->fh) { GV *gv = newGVgen(HvNAME_get(s->stash)); GvIOp(gv) = newIO(); - s->fh = newRV_noinc((SV *) gv); + s->fh = newRV((SV *) gv); s->io = GvIOp(gv); + if (gv) { + /* shamelessly stolen from IO::File's new_tmpfile() */ + hv_delete(GvSTASH(gv), GvNAME(gv), GvNAMELEN(gv), G_DISCARD); + } } IoIFP(s->io) = PerlIONext(f); IoOFP(s->io) = PerlIONext(f); End of Patch.