From: Nicholas Clark Date: Mon, 6 Nov 2006 21:05:59 +0000 (+0000) Subject: assert() that SvPV_set() isn't used on hashes. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=797c717188459bd306f22db4f33d8350f22fec7c;p=p5sagit%2Fp5-mst-13.2.git assert() that SvPV_set() isn't used on hashes. p4raw-id: //depot/perl@29220 --- diff --git a/sv.c b/sv.c index eb3796f..8aaa792 100644 --- a/sv.c +++ b/sv.c @@ -1277,13 +1277,11 @@ Perl_sv_upgrade(pTHX_ register SV *sv, svtype new_type) assert(SvPVX_const(sv) == 0); } - /* Could put this in the else clause below, as PVMG must have SvPVX - 0 already (the assertion above) */ - SvPV_set(sv, NULL); - if (old_type >= SVt_PVMG) { SvMAGIC_set(sv, ((XPVMG*)old_body)->xmg_u.xmg_magic); SvSTASH_set(sv, ((XPVMG*)old_body)->xmg_stash); + } else { + sv->sv_u.svu_array = NULL; /* or svu_hash */ } break; @@ -10125,7 +10123,7 @@ Perl_sv_dup(pTHX_ const SV *sstr, CLONE_PARAMS* param) } } else - SvPV_set(dstr, NULL); + HvARRAY((HV*)dstr) = NULL; break; case SVt_PVCV: if (!(param->flags & CLONEf_COPY_STACKS)) { diff --git a/sv.h b/sv.h index d1b9bb6..0937fbd 100644 --- a/sv.h +++ b/sv.h @@ -1239,6 +1239,7 @@ the scalar's value cannot change unless written to. (((XPVNV*)SvANY(sv))->xnv_u.xnv_nv = (val)); } STMT_END #define SvPV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_PV); \ + assert(SvTYPE(sv) != SVt_PVHV); \ assert(!isGV_with_GP(sv)); \ ((sv)->sv_u.svu_pv = (val)); } STMT_END #define SvUV_set(sv, val) \