av = (AV*)NEWSV(3,0);
sv_upgrade((SV *)av, SVt_PVAV);
- AvREAL_on(av);
+ /* sv_upgrade does AvREAL_only() */
AvALLOC(av) = 0;
SvPV_set(av, (char*)0);
AvMAX(av) = AvFILLp(av) = -1;
av = (AV*)NEWSV(8,0);
sv_upgrade((SV *) av,SVt_PVAV);
- AvREAL_only(av);
- if (size) { /* `defined' was returning undef for size==0 anyway. */
+ /* sv_upgrade does AvREAL_only() */
+ if (size) { /* "defined" was returning undef for size==0 anyway. */
register SV** ary;
register I32 i;
New(4,ary,size,SV*);
#endif
if (!av)
return;
- /*SUPPRESS 560*/
if (SvREADONLY(av))
Perl_croak(aTHX_ PL_no_modify);
{
if (!av)
return;
- /*SUPPRESS 560*/
/* Give any tie a chance to cleanup first */
if (SvTIED_mg((SV*)av, PERL_MAGIC_tied))
AvALLOC(av) = 0;
SvPV_set(av, (char*)0);
AvMAX(av) = AvFILLp(av) = -1;
- if (AvARYLEN(av)) {
- SvREFCNT_dec(AvARYLEN(av));
- AvARYLEN(av) = 0;
- }
+ /* It's in magic - it must already be gone. */
+ assert (!AvARYLEN(av));
}
/*
MAGIC *mg = mg_find((SV*)av, PERL_MAGIC_arylen_p);
if (!mg) {
- mg = sv_magicext((SV*)av, 0, PERL_MAGIC_arylen_p, 0, 0, 0);
+ mg = sv_magicext((SV*)av, 0, PERL_MAGIC_arylen_p, &PL_vtbl_arylen_p,
+ 0, 0);
if (!mg) {
Perl_die(aTHX_ "panic: av_arylen_p");