| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Commit 604a99bd464c92d7 enabled the warning for package arrays, but failed
to lexically disable the warning for the various tests for the construction.
Even though the construction is deprecated, we'd still like to know if the
behaviour changes, in case it wasn't intentional.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently, when empting a hash of its elements (e.g. via
undef(%h), or %h=()), HvARRAY field is temporarily zeroed, so that
any destructors called on the freed elements see an empty hash.
Change this so that they see any remaining elements. Thus,
%h=() becomes more like C<delete $h{$_} for keys %h>.
The atomic behaviour was introduced (by me) in 2003 with commit
2f86008e34264, to fix RT #3096. This concerned element destructors
that messed with the hash being undeffed, causing unrefed var errors
and the like.
At the time, simply setting HvARRAY to null for the duration seemed like a
simple fix. However, it didn't take account of destructors adding new
elements to the list, thus re-creating HvARRAY. This was subsequently
fixed. Then, the HvAUX structure was invented, which meant that optional
hash fields were hidden away at the end of HvARRAY. This meant that
hfreeentries() acquired a whole bunch of extra code to copy these fields
around between the original HvARRAY and the new HvARRAY and then back
again, and temporarily squirrelling the backref array in backref magic
rather than in HvAUX.
In short, hfreeentries() became a 200 line sprawling mess.
This commit reduces it back to 70, and makes everything conceptually
simpler.
It does however change user-level visible behaviour (back to pre-2003),
but note that the new behaviour now matches the behaviour that arrays have
always had (i.e. destructors see a partially-emptied array).
Note that backref magic for HVs is now always stored in HvAUX
|
|
|
|
|
| |
Tk has been fixed, and no longer uses defined %stash:: to determine if a package
has been loaded.
|
| |
|
| |
|
|
|
| |
p4raw-id: //depot/perl@34159
|
|
|
|
|
| |
Message-ID: <20080628160017.GA81579@osiris.mauzo.dyndns.org>
p4raw-id: //depot/perl@34092
|
|
|
|
|
| |
Message-ID: <20030501200657.GA25456@fdgroup.com>
p4raw-id: //depot/perl@19424
|
|
|
| |
p4raw-id: //depot/perl@19215
|
|
|
|
|
|
|
|
| |
so that we simply can't pick up stuff from other Perls than
the one we are testing. Pointed out by
Subject: Re: [PATCH: 6757] make new Storable tests forgiving of places where not built
Message-Id: <E13SKH1-00031D-00@virgo.cus.cam.ac.uk>
p4raw-id: //depot/perl@6874
|
|
|
| |
p4raw-id: //depot/cfgperl@2356
|
|
|
| |
p4raw-id: //depot/perl@2346
|
|
|
|
|
| |
C<$1 = undef> does
p4raw-id: //depot/perl@2335
|
|
|
|
| |
[editor's note: from history.perl.org. The sparc executables
originally included in the distribution are not in this commit.]
|
|
So far, 4.0 is still a beta test version. For the last production
version, look in pub/perl.3.0/kits@44.
|