/* 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.
void
Perl_av_reify(pTHX_ AV *av)
{
+ dVAR;
I32 key;
assert(av);
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;
SV**
Perl_av_fetch(pTHX_ register AV *av, I32 key, I32 lval)
{
+ dVAR;
SV *sv;
assert(av);
SV**
Perl_av_store(pTHX_ register AV *av, I32 key, SV *val)
{
+ dVAR;
SV** ary;
assert(av);
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;
}
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");
}
Safefree(AvALLOC(av));
AvALLOC(av) = 0;
- SvPV_set(av, (char*)0);
+ SvPV_set(av, NULL);
AvMAX(av) = AvFILLp(av) = -1;
}
SV *
Perl_av_delete(pTHX_ AV *av, I32 key, I32 flags)
{
+ dVAR;
SV *sv;
assert(av);
bool
Perl_av_exists(pTHX_ AV *av, I32 key)
{
+ dVAR;
assert(av);
if (SvRMAGICAL(av)) {
if (!mg) {
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");
- }
+ assert(mg);
/* sv_magicext won't set this for us because we pass in a NULL obj */
mg->mg_flags |= MGf_REFCOUNTED;
}