av = (AV*)NEWSV(8,0);
sv_upgrade((SV *) av,SVt_PVAV);
AvREAL_only(av);
- if (size) { /* `defined' was returning undef for size==0 anyway. */
+ if (size) { /* "defined" was returning undef for size==0 anyway. */
register SV** ary;
register I32 i;
New(4,ary,size,SV*);
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");