summaryrefslogtreecommitdiff
path: root/hv.c
diff options
context:
space:
mode:
Diffstat (limited to 'hv.c')
-rw-r--r--hv.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/hv.c b/hv.c
index 669e55a407..e71759f9ae 100644
--- a/hv.c
+++ b/hv.c
@@ -1038,6 +1038,11 @@ S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
STATIC void
S_hsplit(pTHX_ HV *hv)
{
+ /* Can't make this clear any placeholders first for non-restricted hashes,
+ as Storable rebuilds restricted hashes by putting in all the
+ placeholders (first) before turning on the readonly flag. Hence midway
+ through restoring the hash there are placeholders which need to remain
+ even though the hash isn't (currently) flagged as restricted. */
register XPVHV* xhv = (XPVHV*)SvANY(hv);
I32 oldsize = (I32) xhv->xhv_max+1; /* HvMAX(hv)+1 (sick) */
register I32 newsize = oldsize * 2;