PUSHMARK(sp);
EXTEND(sp,2);
PUSHs(mg->mg_obj);
- PUSHs(sv_2mortal(newSViv(key)));
+ PUSHs(sv_2mortal(newSViv(key+1)));
PUTBACK;
perl_call_method("EXTEND", G_SCALAR|G_DISCARD);
FREETMPS;
warn("Attempt to clear deleted array");
}
#endif
- if (!av || AvMAX(av) < 0)
+ if (!av)
return;
/*SUPPRESS 560*/
if (SvRMAGICAL(av))
mg_clear((SV*)av);
+ if (AvMAX(av) < 0)
+ return;
+
if (AvREAL(av)) {
ary = AvARRAY(av);
key = AvFILLp(av) + 1;
SvREFCNT_dec(AvARRAY(av)[--key]);
}
Safefree(AvALLOC(av));
+ AvARRAY(av) = 0;
AvALLOC(av) = 0;
SvPVX(av) = 0;
AvMAX(av) = AvFILLp(av) = -1;
EXTEND(sp,2);
PUSHs(mg->mg_obj);
PUSHs(val);
- PUTBACK;
+ PUTBACK;
+ ENTER;
perl_call_method("PUSH", G_SCALAR|G_DISCARD);
+ LEAVE;
return;
}
av_store(av,AvFILLp(av)+1,val);
dSP;
PUSHMARK(sp);
XPUSHs(mg->mg_obj);
- PUTBACK;
+ PUTBACK;
+ ENTER;
if (perl_call_method("POP", G_SCALAR)) {
retval = newSVsv(*stack_sp--);
} else {
retval = &sv_undef;
}
+ LEAVE;
return retval;
}
retval = AvARRAY(av)[AvFILLp(av)];
PUSHs(&sv_undef);
}
PUTBACK;
+ ENTER;
perl_call_method("UNSHIFT", G_SCALAR|G_DISCARD);
+ LEAVE;
return;
}
dSP;
PUSHMARK(sp);
XPUSHs(mg->mg_obj);
- PUTBACK;
+ PUTBACK;
+ ENTER;
if (perl_call_method("SHIFT", G_SCALAR)) {
retval = newSVsv(*stack_sp--);
} else {
retval = &sv_undef;
- }
+ }
+ LEAVE;
return retval;
}
retval = *AvARRAY(av);
PUSHMARK(sp);
EXTEND(sp,2);
PUSHs(mg->mg_obj);
- PUSHs(sv_2mortal(newSViv(fill)));
+ PUSHs(sv_2mortal(newSViv(fill+1)));
PUTBACK;
perl_call_method("STORESIZE", G_SCALAR|G_DISCARD);
FREETMPS;