X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=av.c;h=c1b03fee75be2c63df32febe14d45b7e1f40aaa6;hb=e59c8b07349f66b8f6de8cad95787c1bfaf1297d;hp=39b4b7d3270c499da85572b294997490e6c6e348;hpb=b9f83d2f7c4cb24d96302c6fcaa5e60628fad1f8;p=p5sagit%2Fp5-mst-13.2.git diff --git a/av.c b/av.c index 39b4b7d..c1b03fe 100644 --- a/av.c +++ b/av.c @@ -469,17 +469,20 @@ Perl_av_undef(pTHX_ register AV *av) /* Give any tie a chance to cleanup first */ if (SvTIED_mg((SV*)av, PERL_MAGIC_tied)) - av_fill(av, -1); /* mg_clear() ? */ + av_fill(av, -1); if (AvREAL(av)) { register I32 key = AvFILLp(av) + 1; while (key) SvREFCNT_dec(AvARRAY(av)[--key]); } + Safefree(AvALLOC(av)); AvALLOC(av) = NULL; AvARRAY(av) = NULL; AvMAX(av) = AvFILLp(av) = -1; + + if(SvRMAGICAL(av)) mg_clear((SV*)av); } /* @@ -656,10 +659,9 @@ Perl_av_unshift(pTHX_ register AV *av, register I32 num) } if (num) { register SV **ary; - I32 slide; - i = AvFILLp(av); + const I32 i = AvFILLp(av); /* Create extra elements */ - slide = i > 0 ? i : 0; + const I32 slide = i > 0 ? i : 0; num += slide; av_extend(av, i + num); AvFILLp(av) += num;