This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Clean up some comments.
[perl5.git] / av.c
diff --git a/av.c b/av.c
index fc6fca3..3dfdf9a 100644 (file)
--- a/av.c
+++ b/av.c
@@ -1,7 +1,7 @@
 /*    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.
@@ -42,7 +42,7 @@ Perl_av_reify(pTHX_ AV *av)
        SV * const sv = AvARRAY(av)[--key];
        assert(sv);
        if (sv != &PL_sv_undef)
-           (void)SvREFCNT_inc(sv);
+           SvREFCNT_inc_simple_void_NN(sv);
     }
     key = AvARRAY(av) - AvALLOC(av);
     while (key)
@@ -194,32 +194,31 @@ SV**
 Perl_av_fetch(pTHX_ register AV *av, I32 key, I32 lval)
 {
     dVAR;
-    SV *sv;
 
     assert(av);
 
     if (SvRMAGICAL(av)) {
         const MAGIC * const tied_magic = mg_find((SV*)av, PERL_MAGIC_tied);
         if (tied_magic || mg_find((SV*)av, PERL_MAGIC_regdata)) {
-            U32 adjust_index = 1;
-
-            if (tied_magic && key < 0) {
-                /* Handle negative array indices 20020222 MJD */
-               SV * const * const negative_indices_glob =
-                    hv_fetch(SvSTASH(SvRV(SvTIED_obj((SV *)av, 
-                                                     tied_magic))), 
-                             NEGATIVE_INDICES_VAR, 16, 0);
+           SV *sv;
+           if (key < 0) {
+               I32 adjust_index = 1;
+               if (tied_magic) {
+                   /* Handle negative array indices 20020222 MJD */
+                   SV * const * const negative_indices_glob =
+                       hv_fetch(SvSTASH(SvRV(SvTIED_obj((SV *)av, tied_magic))),
+                               NEGATIVE_INDICES_VAR, 16, 0);
 
-                if (negative_indices_glob
-                    && SvTRUE(GvSV(*negative_indices_glob)))
-                    adjust_index = 0;
-            }
+                   if (negative_indices_glob && SvTRUE(GvSV(*negative_indices_glob)))
+                       adjust_index = 0;
+               }
 
-            if (key < 0 && adjust_index) {
-                key += AvFILL(av) + 1;
-                if (key < 0)
-                    return 0;
-            }
+               if (adjust_index) {
+                   key += AvFILL(av) + 1;
+                   if (key < 0)
+                       return NULL;
+               }
+           }
 
             sv = sv_newmortal();
            sv_upgrade(sv, SVt_PVLV);
@@ -233,22 +232,19 @@ Perl_av_fetch(pTHX_ register AV *av, I32 key, I32 lval)
     if (key < 0) {
        key += AvFILL(av) + 1;
        if (key < 0)
-           return 0;
+           return NULL;
     }
 
     if (key > AvFILLp(av)) {
        if (!lval)
-           return 0;
-       sv = NEWSV(5,0);
-       return av_store(av,key,sv);
+           return NULL;
+       return av_store(av,key,newSV(0));
     }
     if (AvARRAY(av)[key] == &PL_sv_undef) {
     emptyness:
-       if (lval) {
-           sv = NEWSV(6,0);
-           return av_store(av,key,sv);
-       }
-       return 0;
+       if (lval)
+           return av_store(av,key,newSV(0));
+       return NULL;
     }
     else if (AvREIFY(av)
             && (!AvARRAY(av)[key]      /* eg. @_ could have freed elts */
@@ -284,6 +280,10 @@ Perl_av_store(pTHX_ register AV *av, I32 key, SV *val)
 
     assert(av);
 
+    /* S_regclass relies on being able to pass in a NULL sv
+       (unicode_alternate may be NULL).
+    */
+
     if (!val)
        val = &PL_sv_undef;
 
@@ -292,7 +292,7 @@ Perl_av_store(pTHX_ register AV *av, I32 key, SV *val)
         if (tied_magic) {
             /* Handle negative array indices 20020222 MJD */
             if (key < 0) {
-                unsigned adjust_index = 1;
+               bool adjust_index = 1;
                SV * const * const negative_indices_glob =
                     hv_fetch(SvSTASH(SvRV(SvTIED_obj((SV *)av, 
                                                      tied_magic))), 
@@ -309,7 +309,7 @@ Perl_av_store(pTHX_ register AV *av, I32 key, SV *val)
            if (val != &PL_sv_undef) {
                mg_copy((SV*)av, val, 0, key);
            }
-           return 0;
+           return NULL;
         }
     }
 
@@ -317,7 +317,7 @@ Perl_av_store(pTHX_ register AV *av, I32 key, SV *val)
     if (key < 0) {
        key += AvFILL(av) + 1;
        if (key < 0)
-           return 0;
+           return NULL;
     }
 
     if (SvREADONLY(av) && key >= AvFILL(av))
@@ -332,9 +332,9 @@ Perl_av_store(pTHX_ register AV *av, I32 key, SV *val)
        if (!AvREAL(av)) {
            if (av == PL_curstack && key > PL_stack_sp - PL_stack_base)
                PL_stack_sp = PL_stack_base + key;      /* XPUSH in disguise */
-           do
+           do {
                ary[++AvFILLp(av)] = &PL_sv_undef;
-           while (AvFILLp(av) < key);
+           while (AvFILLp(av) < key);
        }
        AvFILLp(av) = key;
     }
@@ -362,12 +362,12 @@ Creates a new AV.  The reference count is set to 1.
 AV *
 Perl_newAV(pTHX)
 {
-    register AV * const av = (AV*)NEWSV(3,0);
+    register AV * const av = (AV*)newSV(0);
 
     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;
 }
@@ -385,7 +385,7 @@ will have a reference count of 1.
 AV *
 Perl_av_make(pTHX_ register I32 size, register SV **strp)
 {
-    register AV * const av = (AV*)NEWSV(8,0);
+    register AV * const av = (AV*)newSV(0);
 
     sv_upgrade((SV *) av,SVt_PVAV);
     /* sv_upgrade does AvREAL_only()  */
@@ -395,11 +395,10 @@ Perl_av_make(pTHX_ register I32 size, register SV **strp)
        Newx(ary,size,SV*);
        AvALLOC(av) = ary;
        SvPV_set(av, (char*)ary);
-       AvFILLp(av) = size - 1;
-       AvMAX(av) = size - 1;
+       AvFILLp(av) = AvMAX(av) = size - 1;
        for (i = 0; i < size; i++) {
            assert (*strp);
-           ary[i] = NEWSV(7,0);
+           ary[i] = newSV(0);
            sv_setsv(ary[i], *strp);
            strp++;
        }
@@ -420,7 +419,7 @@ void
 Perl_av_clear(pTHX_ register AV *av)
 {
     dVAR;
-    register I32 key;
+    I32 extra;
 
     assert(av);
 #ifdef DEBUGGING
@@ -441,17 +440,18 @@ Perl_av_clear(pTHX_ register AV *av)
 
     if (AvREAL(av)) {
        SV** const ary = AvARRAY(av);
-       key = AvFILLp(av) + 1;
-       while (key) {
-           SV * const sv = ary[--key];
+       I32 index = AvFILLp(av) + 1;
+       while (index) {
+           SV * const sv = ary[--index];
            /* undef the slot before freeing the value, because a
-            * destructor might try to modify this arrray */
-           ary[key] = &PL_sv_undef;
+            * destructor might try to modify this array */
+           ary[index] = &PL_sv_undef;
            SvREFCNT_dec(sv);
        }
     }
-    if ((key = AvARRAY(av) - AvALLOC(av))) {
-       AvMAX(av) += key;
+    extra = AvARRAY(av) - AvALLOC(av);
+    if (extra) {
+       AvMAX(av) += extra;
        SvPV_set(av, (char*)AvALLOC(av));
     }
     AvFILLp(av) = -1;
@@ -481,8 +481,8 @@ Perl_av_undef(pTHX_ register AV *av)
            SvREFCNT_dec(AvARRAY(av)[--key]);
     }
     Safefree(AvALLOC(av));
-    AvALLOC(av) = 0;
-    SvPV_set(av, (char*)0);
+    AvALLOC(av) = NULL;
+    SvPV_set(av, NULL);
     AvMAX(av) = AvFILLp(av) = -1;
 }