diff options
author | Nicholas Clark <nick@ccl4.org> | 2008-03-08 11:20:28 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2008-03-08 11:20:28 +0000 |
commit | 2fed2a1ba94aec1ffaf141357a7d90754b2b3208 (patch) | |
tree | 3fbed0a66e5aeb9bc2c333920685b0e3f6855328 | |
parent | 75ca6fb6be93753b6f530f049fb88e4001c98466 (diff) | |
download | perl-2fed2a1ba94aec1ffaf141357a7d90754b2b3208.tar.gz |
Assert that the av argument to all the av_*() functions is an array.
p4raw-id: //depot/perl@33452
-rw-r--r-- | av.c | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -28,6 +28,7 @@ Perl_av_reify(pTHX_ AV *av) I32 key; PERL_ARGS_ASSERT_AV_REIFY; + assert(SvTYPE(av) == SVt_PVAV); if (AvREAL(av)) return; @@ -67,6 +68,7 @@ Perl_av_extend(pTHX_ AV *av, I32 key) MAGIC *mg; PERL_ARGS_ASSERT_AV_EXTEND; + assert(SvTYPE(av) == SVt_PVAV); mg = SvTIED_mg((SV*)av, PERL_MAGIC_tied); if (mg) { @@ -210,6 +212,7 @@ Perl_av_fetch(pTHX_ register AV *av, I32 key, I32 lval) dVAR; PERL_ARGS_ASSERT_AV_FETCH; + assert(SvTYPE(av) == SVt_PVAV); if (SvRMAGICAL(av)) { const MAGIC * const tied_magic = mg_find((SV*)av, PERL_MAGIC_tied); @@ -293,6 +296,7 @@ Perl_av_store(pTHX_ register AV *av, I32 key, SV *val) SV** ary; PERL_ARGS_ASSERT_AV_STORE; + assert(SvTYPE(av) == SVt_PVAV); /* S_regclass relies on being able to pass in a NULL sv (unicode_alternate may be NULL). @@ -384,6 +388,8 @@ Perl_av_make(pTHX_ register I32 size, register SV **strp) register AV * const av = (AV*)newSV_type(SVt_PVAV); /* sv_upgrade does AvREAL_only() */ PERL_ARGS_ASSERT_AV_MAKE; + assert(SvTYPE(av) == SVt_PVAV); + if (size) { /* "defined" was returning undef for size==0 anyway. */ register SV** ary; register I32 i; @@ -417,6 +423,8 @@ Perl_av_clear(pTHX_ register AV *av) I32 extra; PERL_ARGS_ASSERT_AV_CLEAR; + assert(SvTYPE(av) == SVt_PVAV); + #ifdef DEBUGGING if (SvREFCNT(av) == 0 && ckWARN_d(WARN_DEBUGGING)) { Perl_warner(aTHX_ packWARN(WARN_DEBUGGING), "Attempt to clear deleted array"); @@ -470,6 +478,7 @@ void Perl_av_undef(pTHX_ register AV *av) { PERL_ARGS_ASSERT_AV_UNDEF; + assert(SvTYPE(av) == SVt_PVAV); /* Give any tie a chance to cleanup first */ if (SvTIED_mg((SV*)av, PERL_MAGIC_tied)) @@ -503,6 +512,7 @@ void Perl_av_create_and_push(pTHX_ AV **const avp, SV *const val) { PERL_ARGS_ASSERT_AV_CREATE_AND_PUSH; + if (!*avp) *avp = newAV(); av_push(*avp, val); @@ -524,6 +534,7 @@ Perl_av_push(pTHX_ register AV *av, SV *val) MAGIC *mg; PERL_ARGS_ASSERT_AV_PUSH; + assert(SvTYPE(av) == SVt_PVAV); if (SvREADONLY(av)) Perl_croak(aTHX_ PL_no_modify); @@ -562,6 +573,7 @@ Perl_av_pop(pTHX_ register AV *av) MAGIC* mg; PERL_ARGS_ASSERT_AV_POP; + assert(SvTYPE(av) == SVt_PVAV); if (SvREADONLY(av)) Perl_croak(aTHX_ PL_no_modify); @@ -605,6 +617,7 @@ SV ** Perl_av_create_and_unshift_one(pTHX_ AV **const avp, SV *const val) { PERL_ARGS_ASSERT_AV_CREATE_AND_UNSHIFT_ONE; + if (!*avp) *avp = newAV(); av_unshift(*avp, 1); @@ -629,6 +642,7 @@ Perl_av_unshift(pTHX_ register AV *av, register I32 num) MAGIC* mg; PERL_ARGS_ASSERT_AV_UNSHIFT; + assert(SvTYPE(av) == SVt_PVAV); if (SvREADONLY(av)) Perl_croak(aTHX_ PL_no_modify); @@ -700,6 +714,7 @@ Perl_av_shift(pTHX_ register AV *av) MAGIC* mg; PERL_ARGS_ASSERT_AV_SHIFT; + assert(SvTYPE(av) == SVt_PVAV); if (SvREADONLY(av)) Perl_croak(aTHX_ PL_no_modify); @@ -745,6 +760,8 @@ I32 Perl_av_len(pTHX_ register const AV *av) { PERL_ARGS_ASSERT_AV_LEN; + assert(SvTYPE(av) == SVt_PVAV); + return AvFILL(av); } @@ -769,6 +786,7 @@ Perl_av_fill(pTHX_ register AV *av, I32 fill) MAGIC *mg; PERL_ARGS_ASSERT_AV_FILL; + assert(SvTYPE(av) == SVt_PVAV); if (fill < 0) fill = -1; @@ -827,6 +845,7 @@ Perl_av_delete(pTHX_ AV *av, I32 key, I32 flags) SV *sv; PERL_ARGS_ASSERT_AV_DELETE; + assert(SvTYPE(av) == SVt_PVAV); if (SvREADONLY(av)) Perl_croak(aTHX_ PL_no_modify); @@ -913,6 +932,7 @@ Perl_av_exists(pTHX_ AV *av, I32 key) { dVAR; PERL_ARGS_ASSERT_AV_EXISTS; + assert(SvTYPE(av) == SVt_PVAV); if (SvRMAGICAL(av)) { const MAGIC * const tied_magic = mg_find((SV*)av, PERL_MAGIC_tied); @@ -969,6 +989,7 @@ S_get_aux_mg(pTHX_ AV *av) { MAGIC *mg; PERL_ARGS_ASSERT_GET_AUX_MG; + assert(SvTYPE(av) == SVt_PVAV); mg = mg_find((SV*)av, PERL_MAGIC_arylen_p); @@ -987,6 +1008,7 @@ Perl_av_arylen_p(pTHX_ AV *av) { MAGIC *const mg = get_aux_mg(av); PERL_ARGS_ASSERT_AV_ARYLEN_P; + assert(SvTYPE(av) == SVt_PVAV); return &(mg->mg_obj); } @@ -996,6 +1018,7 @@ Perl_av_iter_p(pTHX_ AV *av) { MAGIC *const mg = get_aux_mg(av); PERL_ARGS_ASSERT_AV_ITER_P; + assert(SvTYPE(av) == SVt_PVAV); #if IVSIZE == I32SIZE return (IV *)&(mg->mg_len); |