X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hv.c;h=4831ccd563ad38db1cc0b76ce23ab5d645768f83;hb=5b6782b28b8a9d505447276bdd3de3a802f641dd;hp=ccc10df789cc16396c00a6b2bce6ee252c78537d;hpb=7680e184ccc299509cb60f73dd84391ef26e0f56;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hv.c b/hv.c index ccc10df..4831ccd 100644 --- a/hv.c +++ b/hv.c @@ -1397,12 +1397,9 @@ HV * Perl_newHV(pTHX) { register XPVHV* xhv; - HV * const hv = (HV*)newSV(0); - - sv_upgrade((SV *)hv, SVt_PVHV); + HV * const hv = (HV*)newSV_type(SVt_PVHV); xhv = (XPVHV*)SvANY(hv); - SvPOK_off(hv); - SvNOK_off(hv); + assert(!SvOK(hv)); #ifndef NODEFAULT_SHAREKEYS HvSHAREKEYS_on(hv); /* key-sharing on by default */ #endif @@ -2292,6 +2289,7 @@ Perl_unsharepvn(pTHX_ const char *str, I32 len, U32 hash) void Perl_unshare_hek(pTHX_ HEK *hek) { + assert(hek); unshare_hek_or_pvn(hek, NULL, 0, 0); } @@ -2590,8 +2588,7 @@ S_refcounted_he_value(pTHX_ const struct refcounted_he *he) case HVrhek_PV: /* Create a string SV that directly points to the bytes in our structure. */ - value = newSV(0); - sv_upgrade(value, SVt_PV); + value = newSV_type(SVt_PV); SvPV_set(value, (char *) he->refcounted_he_data + 1); SvCUR_set(value, he->refcounted_he_val.refcounted_he_u_len); /* This stops anything trying to free it */ @@ -2619,7 +2616,7 @@ S_refcounted_he_value(pTHX_ const struct refcounted_he *he) /* =for apidoc refcounted_he_chain_2hv -Generates an returns a C by walking up the tree starting at the passed +Generates and returns a C by walking up the tree starting at the passed in C. =cut