X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=av.c;h=423d00632d1aed8424add4a352ac62ea3db904cc;hb=92adfbd49af0758bcc9a198cf2df2bd78c4176b9;hp=6223136116e5cf8d79555a4b5bfe9453c91ddddc;hpb=c82c7adca4650d274d01de66ba3967c9261ee1de;p=p5sagit%2Fp5-mst-13.2.git diff --git a/av.c b/av.c index 6223136..423d006 100644 --- a/av.c +++ b/av.c @@ -1,7 +1,7 @@ /* av.c * * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - * 2000, 2001, 2002, 2003, 2004, 2005 by Larry Wall and others + * 2000, 2001, 2002, 2003, 2004, 2005, 2006, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -24,6 +24,7 @@ void Perl_av_reify(pTHX_ AV *av) { + dVAR; I32 key; assert(av); @@ -41,7 +42,7 @@ Perl_av_reify(pTHX_ AV *av) SV * const sv = AvARRAY(av)[--key]; assert(sv); if (sv != &PL_sv_undef) - (void)SvREFCNT_inc(sv); + SvREFCNT_inc_void_NN(sv); } key = AvARRAY(av) - AvALLOC(av); while (key) @@ -62,9 +63,12 @@ extended. void Perl_av_extend(pTHX_ AV *av, I32 key) { + dVAR; + MAGIC *mg; + assert(av); - MAGIC * const mg = SvTIED_mg((SV*)av, PERL_MAGIC_tied); + mg = SvTIED_mg((SV*)av, PERL_MAGIC_tied); if (mg) { dSP; ENTER; @@ -189,6 +193,7 @@ more information on how to use this function on tied arrays. SV** Perl_av_fetch(pTHX_ register AV *av, I32 key, I32 lval) { + dVAR; SV *sv; assert(av); @@ -234,13 +239,13 @@ Perl_av_fetch(pTHX_ register AV *av, I32 key, I32 lval) if (key > AvFILLp(av)) { if (!lval) return 0; - sv = NEWSV(5,0); + sv = newSV(0); return av_store(av,key,sv); } if (AvARRAY(av)[key] == &PL_sv_undef) { emptyness: if (lval) { - sv = NEWSV(6,0); + sv = newSV(0); return av_store(av,key,sv); } return 0; @@ -274,6 +279,7 @@ more information on how to use this function on tied arrays. SV** Perl_av_store(pTHX_ register AV *av, I32 key, SV *val) { + dVAR; SV** ary; assert(av); @@ -356,12 +362,12 @@ Creates a new AV. The reference count is set to 1. AV * Perl_newAV(pTHX) { - register AV * const av = (AV*)NEWSV(3,0); + register AV * const av = (AV*)newSV(0); sv_upgrade((SV *)av, SVt_PVAV); /* sv_upgrade does AvREAL_only() */ AvALLOC(av) = 0; - SvPV_set(av, (char*)0); + SvPV_set(av, NULL); AvMAX(av) = AvFILLp(av) = -1; return av; } @@ -379,7 +385,7 @@ will have a reference count of 1. AV * Perl_av_make(pTHX_ register I32 size, register SV **strp) { - register AV * const av = (AV*)NEWSV(8,0); + register AV * const av = (AV*)newSV(0); sv_upgrade((SV *) av,SVt_PVAV); /* sv_upgrade does AvREAL_only() */ @@ -393,7 +399,7 @@ Perl_av_make(pTHX_ register I32 size, register SV **strp) AvMAX(av) = size - 1; for (i = 0; i < size; i++) { assert (*strp); - ary[i] = NEWSV(7,0); + ary[i] = newSV(0); sv_setsv(ary[i], *strp); strp++; } @@ -413,11 +419,10 @@ array itself. void Perl_av_clear(pTHX_ register AV *av) { + dVAR; register I32 key; assert(av); - -/* XXX Should av_clear really be NN? */ #ifdef DEBUGGING if (SvREFCNT(av) == 0 && ckWARN_d(WARN_DEBUGGING)) { Perl_warner(aTHX_ packWARN(WARN_DEBUGGING), "Attempt to clear deleted array"); @@ -477,7 +482,7 @@ Perl_av_undef(pTHX_ register AV *av) } Safefree(AvALLOC(av)); AvALLOC(av) = 0; - SvPV_set(av, (char*)0); + SvPV_set(av, NULL); AvMAX(av) = AvFILLp(av) = -1; } @@ -769,6 +774,7 @@ and null is returned. SV * Perl_av_delete(pTHX_ AV *av, I32 key, I32 flags) { + dVAR; SV *sv; assert(av); @@ -856,6 +862,7 @@ C<&PL_sv_undef>. bool Perl_av_exists(pTHX_ AV *av, I32 key) { + dVAR; assert(av); if (SvRMAGICAL(av)) {