diff options
author | David Mitchell <davem@iabyn.com> | 2010-09-20 13:43:33 +0100 |
---|---|---|
committer | David Mitchell <davem@iabyn.com> | 2010-09-20 13:43:33 +0100 |
commit | e4487e9b537f1be1e95aba1c87790c2a411788a7 (patch) | |
tree | 283ea0396516b5f104e484bf9c6e1033de3bae44 /lib/look.pl | |
parent | 8e7d0c4b4f9a32461518a61c3643c060cadc7b52 (diff) | |
download | perl-e4487e9b537f1be1e95aba1c87790c2a411788a7.tar.gz |
run named IO destructors later
split do_clean_named_objs() into two functions; the first skips the IO
slot, and the second, do_clean_named_io_objs(), only processes the IO slot.
This means that the destructors for IO objects are run later than for
other named objects, so the latter will still have access to all their IO.
This is a fix for 57ef47cc7bcd1b57927d5010f363ccaa10f1d990,
which changed do_clean_named_objs() to zap the slots of a GV rather
than just decrementing the GV's ref count. This change ensures
referential integrity, but means that GVs with a reference > 1 will still
have their slots zapped. In particular, it means that PL_defoutgv no
longer gets delayed zapping. However, this has always been a problem
for any other file handles; depending on the order of GV zapping, a file
handle could be freed before a destructor gets called that might use it.
So this is a general fix.
Diffstat (limited to 'lib/look.pl')
0 files changed, 0 insertions, 0 deletions