From: Nicholas Clark Date: Wed, 17 Jan 2007 15:42:54 +0000 (+0000) Subject: If we use SvUPGRADE() rather than sv_upgrade() then it can make the X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=0d092c369b1b264b1238936288c807173152e270;p=p5sagit%2Fp5-mst-13.2.git If we use SvUPGRADE() rather than sv_upgrade() then it can make the decision on not "up"grading PVLV to PVGV for us. However, it appears that the other actions conducted for "not-yet-a-glob" are useful here. p4raw-id: //depot/perl@29852 --- diff --git a/sv.c b/sv.c index bfc9ee7..2d4fc39 100644 --- a/sv.c +++ b/sv.c @@ -3171,15 +3171,14 @@ S_glob_assign_glob(pTHX_ SV *dstr, SV *sstr, const int dtype) if (dtype != SVt_PVGV) { const char * const name = GvNAME(sstr); const STRLEN len = GvNAMELEN(sstr); - /* don't upgrade SVt_PVLV: it can hold a glob */ - if (dtype != SVt_PVLV) { + { if (dtype >= SVt_PV) { SvPV_free(dstr); SvPV_set(dstr, 0); SvLEN_set(dstr, 0); SvCUR_set(dstr, 0); } - sv_upgrade(dstr, SVt_PVGV); + SvUPGRADE(dstr, SVt_PVGV); (void)SvOK_off(dstr); /* FIXME - why are we doing this, then turning it off and on again below? */