diff options
author | Nicholas Clark <nick@ccl4.org> | 2021-07-24 16:20:56 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2021-07-26 07:06:00 +0000 |
commit | c23e25b4e677ccabda2bc164083171818f764db0 (patch) | |
tree | c43ae37d25b547e3eebd27dfef9ea99fb4fe7be0 /MANIFEST | |
parent | f1c1602aa05e6e31a961fec177e6d315ca1db236 (diff) | |
download | perl-c23e25b4e677ccabda2bc164083171818f764db0.tar.gz |
S_clear_placeholders() should call HvHASKFLAGS_off() if no keys remain.
This isn't essential - HvHASKFLAGS() set when there are no keys with flags
merely disables some potential optimisations. (The other way round - not
being set when keys have flags would be a bug).
This is a regression I introduced in Feb 2004 with commit d36773897a6f30fc:
hv_clear_placeholders now manipulates the linked lists directly, rather
than using the iterator interface and calling hv_delete
This will allow hv_delete to be simplified to remove most of the
special casing related to placeholders.
However several people have looked at the code since then and no-one has
realised that with the logic as-was, this call had to be unreachable.
Also avoid calling HvPLACEHOLDERS_get() twice - each caller has already
done this, so pass the value in.
Diffstat (limited to 'MANIFEST')
-rw-r--r-- | MANIFEST | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -5878,6 +5878,7 @@ t/op/grep.t See if grep() and map() work t/op/groups.t See if $( works t/op/gv.t See if typeglobs work t/op/hash.t See if the complexity attackers are repelled +t/op/hash-clear-placeholders.t FIXME t/op/hash-rt85026.t See if hash iteration/deletion works t/op/hashassign.t See if hash assignments work t/op/hashwarn.t See if warnings for bad hash assignments work |