From: Nicholas Clark Date: Sat, 7 Feb 2004 22:32:44 +0000 (+0000) Subject: Comment to record why we can't clear placeholders in hsplit X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=752f6c60047f2fe3834832a1654d72ea5afe3f22;p=p5sagit%2Fp5-mst-13.2.git Comment to record why we can't clear placeholders in hsplit p4raw-id: //depot/perl@22282 --- diff --git a/hv.c b/hv.c index 669e55a..e71759f 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;