It's the Barbie bus patch
Andy Lester [Mon, 9 Jan 2006 23:42:43 +0000 (17:42 -0600)]
Message-ID: <20060110054243.GA26165@petdance.com>

p4raw-id: //depot/perl@26764

21 files changed:
av.c
doio.c
embed.fnc
embed.h
gv.c
hv.c
mg.c
op.c
pad.c
pp_ctl.c
pp_hot.c
pp_sys.c
proto.h
reentr.c
reentr.h
regcomp.c
regexec.c
sv.c
toke.c
uconfig.sh
util.c

diff --git a/av.c b/av.c
index 42e1887..19aeffb 100644 (file)
--- a/av.c
+++ b/av.c
@@ -367,7 +367,7 @@ Perl_newAV(pTHX)
     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;
 }
@@ -482,7 +482,7 @@ Perl_av_undef(pTHX_ register AV *av)
     }
     Safefree(AvALLOC(av));
     AvALLOC(av) = 0;
-    SvPV_set(av, (char*)0);
+    SvPV_set(av, NULL);
     AvMAX(av) = AvFILLp(av) = -1;
 }
 
diff --git a/doio.c b/doio.c
index 1dc4169..8474465 100644 (file)
--- a/doio.c
+++ b/doio.c
@@ -1381,7 +1381,7 @@ Perl_do_aexec5(pTHX_ SV *really, register SV **mark, register SV **sp,
 #else
     if (sp > mark) {
        char **a;
-       const char *tmps = Nullch;
+       const char *tmps = NULL;
        Newx(PL_Argv, sp - mark + 1, char*);
        a = PL_Argv;
 
@@ -1391,7 +1391,7 @@ Perl_do_aexec5(pTHX_ SV *really, register SV **mark, register SV **sp,
            else
                *a++ = "";
        }
-       *a = Nullch;
+       *a = NULL;
        if (really)
            tmps = SvPV_nolen_const(really);
        if ((!really && *PL_Argv[0] != '/') ||
@@ -1544,7 +1544,7 @@ Perl_do_exec3(pTHX_ const char *incmd, int fd, int do_report)
        if (*s)
            *s++ = '\0';
     }
-    *a = Nullch;
+    *a = NULL;
     if (PL_Argv[0]) {
        PERL_FPU_PRE_EXEC
        PerlProc_execvp(PL_Argv[0],PL_Argv);
@@ -1553,15 +1553,13 @@ Perl_do_exec3(pTHX_ const char *incmd, int fd, int do_report)
            do_execfree();
            goto doshell;
        }
-       {
-           if (ckWARN(WARN_EXEC))
-               Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't exec \"%s\": %s",
-                   PL_Argv[0], Strerror(errno));
-           if (do_report) {
-               const int e = errno;
-               PerlLIO_write(fd, (void*)&e, sizeof(int));
-               PerlLIO_close(fd);
-           }
+       if (ckWARN(WARN_EXEC))
+           Perl_warner(aTHX_ packWARN(WARN_EXEC), "Can't exec \"%s\": %s",
+               PL_Argv[0], Strerror(errno));
+       if (do_report) {
+           const int e = errno;
+           PerlLIO_write(fd, (const void*)&e, sizeof(int));
+           PerlLIO_close(fd);
        }
     }
     do_execfree();
index b54969d..dfe412d 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -1278,7 +1278,6 @@ ERs       |bool   |reginclass     |NN const regnode *n|NN const U8 *p|NULLOK STRLEN *lenp\
                                |bool do_utf8sv_is_utf8
 Es     |CHECKPOINT|regcppush   |I32 parenfloor
 Es     |char*|regcppop
-Es     |char*|regcp_set_to     |I32 ss
 Es     |void   |cache_re       |NN regexp *prog
 ERs    |U8*    |reghop         |NN U8 *pos|I32 off
 ERs    |U8*    |reghop3        |NN U8 *pos|I32 off|NN U8 *lim
diff --git a/embed.h b/embed.h
index f359500..88804de 100644 (file)
--- a/embed.h
+++ b/embed.h
 #define reginclass             S_reginclass
 #define regcppush              S_regcppush
 #define regcppop               S_regcppop
-#define regcp_set_to           S_regcp_set_to
 #define cache_re               S_cache_re
 #define reghop                 S_reghop
 #define reghop3                        S_reghop3
 #define reginclass(a,b,c,d)    S_reginclass(aTHX_ a,b,c,d)
 #define regcppush(a)           S_regcppush(aTHX_ a)
 #define regcppop()             S_regcppop(aTHX)
-#define regcp_set_to(a)                S_regcp_set_to(aTHX_ a)
 #define cache_re(a)            S_cache_re(aTHX_ a)
 #define reghop(a,b)            S_reghop(aTHX_ a,b)
 #define reghop3(a,b,c)         S_reghop3(aTHX_ a,b,c)
diff --git a/gv.c b/gv.c
index 42c1556..7ebf280 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -435,20 +435,20 @@ Perl_gv_fetchmeth_autoload(pTHX_ HV *stash, const char *name, STRLEN len, I32 le
        GV **gvp;
 
        if (!stash)
-           return Nullgv;      /* UNIVERSAL::AUTOLOAD could cause trouble */
+           return NULL;        /* UNIVERSAL::AUTOLOAD could cause trouble */
        if (len == S_autolen && strnEQ(name, S_autoload, S_autolen))
-           return Nullgv;
+           return NULL;
        if (!(gv = gv_fetchmeth(stash, S_autoload, S_autolen, FALSE)))
-           return Nullgv;
+           return NULL;
        cv = GvCV(gv);
        if (!(CvROOT(cv) || CvXSUB(cv)))
-           return Nullgv;
+           return NULL;
        /* Have an autoload */
        if (level < 0)  /* Cannot do without a stub */
            gv_fetchmeth(stash, name, len, 0);
        gvp = (GV**)hv_fetch(stash, name, len, (level >= 0));
        if (!gvp)
-           return Nullgv;
+           return NULL;
        return *gvp;
     }
     return gv;
@@ -1458,9 +1458,9 @@ Perl_Gv_AMupdate(pTHX_ HV *stash)
     for (i = 1; i < lim; i++)
        amt.table[i] = Nullcv;
     for (; i < NofAMmeth; i++) {
-       const char *cooky = PL_AMG_names[i];
+       const char * const cooky = PL_AMG_names[i];
        /* Human-readable form, for debugging: */
-       const char *cp = (i >= DESTROY_amg ? cooky : AMG_id2name(i));
+       const char * const cp = (i >= DESTROY_amg ? cooky : AMG_id2name(i));
        const STRLEN l = strlen(cooky);
 
        DEBUG_o( Perl_deb(aTHX_ "Checking overloading of \"%s\" in package \"%.256s\"\n",
@@ -1484,7 +1484,7 @@ Perl_Gv_AMupdate(pTHX_ HV *stash)
                /* This is a hack to support autoloading..., while
                   knowing *which* methods were declared as overloaded. */
                /* GvSV contains the name of the method. */
-               GV *ngv = Nullgv;
+               GV *ngv = NULL;
                SV *gvsv = GvSV(gv);
 
                DEBUG_o( Perl_deb(aTHX_ "Resolving method \"%"SVf256\
diff --git a/hv.c b/hv.c
index 69bbdcf..f12f117 100644 (file)
--- a/hv.c
+++ b/hv.c
@@ -447,8 +447,7 @@ S_hv_fetch_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
 
     xhv = (XPVHV*)SvANY(hv);
     if (SvMAGICAL(hv)) {
-       if (SvRMAGICAL(hv) && !(action & (HV_FETCH_ISSTORE|HV_FETCH_ISEXISTS)))
-         {
+       if (SvRMAGICAL(hv) && !(action & (HV_FETCH_ISSTORE|HV_FETCH_ISEXISTS))) {
            if (mg_find((SV*)hv, PERL_MAGIC_tied) || SvGMAGICAL((SV*)hv)) {
                sv = sv_newmortal();
 
@@ -553,7 +552,7 @@ S_hv_fetch_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
                /* Will need to free this, so set FREEKEY flag.  */
                key = savepvn(key,klen);
                key = (const char*)strupr((char*)key);
-               is_utf8 = 0;
+               is_utf8 = FALSE;
                hash = 0;
                keysv = 0;
 
@@ -596,7 +595,7 @@ S_hv_fetch_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
                    /* Will need to free this, so set FREEKEY flag.  */
                    key = savepvn(key,klen);
                    key = (const char*)strupr((char*)key);
-                   is_utf8 = 0;
+                   is_utf8 = FALSE;
                    hash = 0;
                    keysv = 0;
 
@@ -696,7 +695,7 @@ S_hv_fetch_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
                    /* Need to swap the key we have for a key with the flags we
                       need. As keys are shared we can't just write to the
                       flag, so we share the new one, unshare the old one.  */
-                   HEK *new_hek = share_hek_flags(key, klen, hash,
+                   HEK * const new_hek = share_hek_flags(key, klen, hash,
                                                   masked_flags);
                    unshare_hek (HeKEY_hek(entry));
                    HeKEY_hek(entry) = new_hek;
@@ -920,13 +919,14 @@ SV *
 Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen_i32, I32 flags)
 {
     STRLEN klen;
-    int k_flags = 0;
+    int k_flags;
 
     if (klen_i32 < 0) {
        klen = -klen_i32;
-       k_flags |= HVhek_UTF8;
+       k_flags = HVhek_UTF8;
     } else {
        klen = klen_i32;
+       k_flags = 0;
     }
     return hv_delete_common(hv, NULL, key, klen, k_flags, flags, 0);
 }
@@ -958,7 +958,6 @@ S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
     register HE *entry;
     register HE **oentry;
     HE *const *first_entry;
-    SV *sv;
     bool is_utf8;
     int masked_flags;
 
@@ -981,6 +980,7 @@ S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
        hv_magic_check (hv, &needs_copy, &needs_store);
 
        if (needs_copy) {
+           SV *sv;
            entry = hv_fetch_common(hv, keysv, key, klen,
                                    k_flags & ~HVhek_FREEKEY, HV_FETCH_LVALUE,
                                    Nullsv, hash);
@@ -1051,6 +1051,7 @@ S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
     first_entry = oentry = &(HvARRAY(hv))[hash & (I32) HvMAX(hv)];
     entry = *oentry;
     for (; entry; oentry = &HeNEXT(entry), entry = *oentry) {
+       SV *sv;
        if (HeHASH(entry) != hash)              /* strings can't be equal */
            continue;
        if (HeKLEN(entry) != (I32)klen)
@@ -1067,13 +1068,12 @@ S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
        }
 
        /* if placeholder is here, it's already been deleted.... */
-       if (HeVAL(entry) == &PL_sv_placeholder)
-       {
-         if (k_flags & HVhek_FREEKEY)
-            Safefree(key);
-         return Nullsv;
+       if (HeVAL(entry) == &PL_sv_placeholder) {
+           if (k_flags & HVhek_FREEKEY)
+               Safefree(key);
+           return NULL;
        }
-       else if (SvREADONLY(hv) && HeVAL(entry) && SvREADONLY(HeVAL(entry))) {
+       if (SvREADONLY(hv) && HeVAL(entry) && SvREADONLY(HeVAL(entry))) {
            S_hv_notallowed(aTHX_ k_flags, key, klen,
                            "Attempt to delete readonly key '%"SVf"' from"
                            " a restricted hash");
@@ -1368,8 +1368,9 @@ Perl_hv_ksplit(pTHX_ HV *hv, IV newmax)
        if (!*aep)                              /* non-existent */
            continue;
        for (oentry = aep, entry = *aep; entry; entry = *oentry) {
-           register I32 j;
-           if ((j = (HeHASH(entry) & newsize)) != i) {
+           register I32 j = (HeHASH(entry) & newsize);
+
+           if (j != i) {
                j -= i;
                *oentry = HeNEXT(entry);
                if (!(HeNEXT(entry) = aep[j]))
@@ -1433,7 +1434,7 @@ Perl_newHVhv(pTHX_ HV *ohv)
 
        /* In each bucket... */
        for (i = 0; i <= hv_max; i++) {
-           HE *prev = NULL, *ent = NULL;
+           HE *prev = NULL;
            HE *oent = oents[i];
 
            if (!oent) {
@@ -1447,8 +1448,8 @@ Perl_newHVhv(pTHX_ HV *ohv)
                const char * const key = HeKEY(oent);
                const STRLEN len = HeKLEN(oent);
                const int flags  = HeKFLAGS(oent);
+               HE * const ent   = new_HE();
 
-               ent = new_HE();
                HeVAL(ent)     = newSVsv(HeVAL(oent));
                HeKEY_hek(ent)
                     = shared ? share_hek_flags(key, len, hash, flags)
@@ -1557,7 +1558,7 @@ Perl_hv_clear(pTHX_ HV *hv)
                /* not already placeholder */
                if (HeVAL(entry) != &PL_sv_placeholder) {
                    if (HeVAL(entry) && SvREADONLY(HeVAL(entry))) {
-                       SV* keysv = hv_iterkeysv(entry);
+                       SV* const keysv = hv_iterkeysv(entry);
                        Perl_croak(aTHX_
        "Attempt to delete readonly key '%"SVf"' from a restricted hash",
                                   keysv);
@@ -1615,7 +1616,7 @@ Perl_hv_clear_placeholders(pTHX_ HV *hv)
     i = HvMAX(hv);
     do {
        /* Loop down the linked list heads  */
-       bool first = 1;
+       bool first = TRUE;
        HE **oentry = &(HvARRAY(hv))[i];
        HE *entry;
 
@@ -1639,7 +1640,7 @@ Perl_hv_clear_placeholders(pTHX_ HV *hv)
                }
            } else {
                oentry = &HeNEXT(entry);
-               first = 0;
+               first = FALSE;
            }
        }
     } while (--i >= 0);
@@ -1680,7 +1681,7 @@ S_hfreeentries(pTHX_ HV *hv)
        /* This is the one we're going to try to empty.  First time round
           it's the original array.  (Hopefully there will only be 1 time
           round) */
-       HE **array = HvARRAY(hv);
+       HE ** const array = HvARRAY(hv);
        I32 i = HvMAX(hv);
 
        /* Because we have taken xhv_name out, the only allocated pointer
@@ -1770,7 +1771,7 @@ S_hfreeentries(pTHX_ HV *hv)
        if (--attempts == 0) {
            Perl_die(aTHX_ "panic: hfreeentries failed to free hash - something is repeatedly re-creating entries");
        }
-    };
+    }
        
     HvARRAY(hv) = orig_array;
 
@@ -1866,7 +1867,7 @@ Perl_hv_iterinit(pTHX_ HV *hv)
        Perl_croak(aTHX_ "Bad hash");
 
     if (SvOOK(hv)) {
-       struct xpvhv_aux *iter = HvAUX(hv);
+       struct xpvhv_aux * const iter = HvAUX(hv);
        HE * const entry = iter->xhv_eiter; /* HvEITER(hv) */
        if (entry && HvLAZYDEL(hv)) {   /* was deleted earlier? */
            HvLAZYDEL_off(hv);
@@ -1875,7 +1876,7 @@ Perl_hv_iterinit(pTHX_ HV *hv)
        iter->xhv_riter = -1;   /* HvRITER(hv) = -1 */
        iter->xhv_eiter = Null(HE*); /* HvEITER(hv) = Null(HE*) */
     } else {
-       S_hv_auxinit(aTHX_ hv);
+       hv_auxinit(hv);
     }
 
     /* used to be xhv->xhv_fill before 5.004_65 */
@@ -1889,7 +1890,7 @@ Perl_hv_riter_p(pTHX_ HV *hv) {
     if (!hv)
        Perl_croak(aTHX_ "Bad hash");
 
-    iter = SvOOK(hv) ? HvAUX(hv) : S_hv_auxinit(aTHX_ hv);
+    iter = SvOOK(hv) ? HvAUX(hv) : hv_auxinit(hv);
     return &(iter->xhv_riter);
 }
 
@@ -1900,7 +1901,7 @@ Perl_hv_eiter_p(pTHX_ HV *hv) {
     if (!hv)
        Perl_croak(aTHX_ "Bad hash");
 
-    iter = SvOOK(hv) ? HvAUX(hv) : S_hv_auxinit(aTHX_ hv);
+    iter = SvOOK(hv) ? HvAUX(hv) : hv_auxinit(hv);
     return &(iter->xhv_eiter);
 }
 
@@ -1917,7 +1918,7 @@ Perl_hv_riter_set(pTHX_ HV *hv, I32 riter) {
        if (riter == -1)
            return;
 
-       iter = S_hv_auxinit(aTHX_ hv);
+       iter = hv_auxinit(hv);
     }
     iter->xhv_riter = riter;
 }
@@ -1937,7 +1938,7 @@ Perl_hv_eiter_set(pTHX_ HV *hv, HE *eiter) {
        if (!eiter)
            return;
 
-       iter = S_hv_auxinit(aTHX_ hv);
+       iter = hv_auxinit(hv);
     }
     iter->xhv_eiter = eiter;
 }
@@ -1960,7 +1961,7 @@ Perl_hv_name_set(pTHX_ HV *hv, const char *name, I32 len, int flags)
        if (name == 0)
            return;
 
-       iter = S_hv_auxinit(aTHX_ hv);
+       iter = hv_auxinit(hv);
     }
     PERL_HASH(hash, name, len);
     iter->xhv_name = name ? share_hek(name, len, hash) : 0;
@@ -1968,9 +1969,7 @@ Perl_hv_name_set(pTHX_ HV *hv, const char *name, I32 len, int flags)
 
 AV **
 Perl_hv_backreferences_p(pTHX_ HV *hv) {
-    struct xpvhv_aux *iter;
-
-    iter = SvOOK(hv) ? HvAUX(hv) : S_hv_auxinit(aTHX_ hv);
+    struct xpvhv_aux * const iter = SvOOK(hv) ? HvAUX(hv) : hv_auxinit(hv);
     return &(iter->xhv_backreferences);
 }
 
diff --git a/mg.c b/mg.c
index d6e7667..3e3ebfd 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -643,7 +643,8 @@ Perl_magic_len(pTHX_ SV *sv, MAGIC *mg)
 
 #define SvRTRIM(sv) STMT_START { \
     STRLEN len = SvCUR(sv); \
-    while (len > 0 && isSPACE(SvPVX(sv)[len-1])) \
+    char * const p = SvPVX(sv); \
+    while (len > 0 && isSPACE(p[len-1])) \
        --len; \
     SvCUR_set(sv, len); \
 } STMT_END
@@ -1257,7 +1258,7 @@ Perl_magic_clearsig(pTHX_ SV *sv, MAGIC *mg)
                PL_psig_name[i]=0;
            }
            if(PL_psig_ptr[i]) {
-                SV *to_dec=PL_psig_ptr[i];
+               SV * const to_dec=PL_psig_ptr[i];
                PL_psig_ptr[i]=0;
                LEAVE;
                SvREFCNT_dec(to_dec);
@@ -1964,12 +1965,11 @@ Perl_magic_getvec(pTHX_ SV *sv, MAGIC *mg)
     SV * const lsv = LvTARG(sv);
     PERL_UNUSED_ARG(mg);
 
-    if (!lsv) {
+    if (lsv)
+       sv_setuv(sv, do_vecget(lsv, LvTARGOFF(sv), LvTARGLEN(sv)));
+    else
        SvOK_off(sv);
-       return 0;
-    }
 
-    sv_setuv(sv, do_vecget(lsv, LvTARGOFF(sv), LvTARGLEN(sv)));
     return 0;
 }
 
diff --git a/op.c b/op.c
index 20c0831..09f269a 100644 (file)
--- a/op.c
+++ b/op.c
@@ -792,9 +792,10 @@ Perl_scalarvoid(pTHX_ OP *o)
                      built upon these three nroff macros being used in
                      void context. The pink camel has the details in
                      the script wrapman near page 319. */
-                   if (strnEQ(SvPVX_const(sv), "di", 2) ||
-                       strnEQ(SvPVX_const(sv), "ds", 2) ||
-                       strnEQ(SvPVX_const(sv), "ig", 2))
+                   const char * const maybe_macro = SvPVX_const(sv);
+                   if (strnEQ(maybe_macro, "di", 2) ||
+                       strnEQ(maybe_macro, "ds", 2) ||
+                       strnEQ(maybe_macro, "ig", 2))
                            useless = 0;
                }
            }
@@ -1582,13 +1583,12 @@ S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs, bool for_my)
            ;           /* already in %INC */
        else
            Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT,
-                            newSVpvn(ATTRSMODULE, sizeof(ATTRSMODULE)-1),
-                            Nullsv);
+                            newSVpvs(ATTRSMODULE), NULL);
     }
     else {
        Perl_load_module(aTHX_ PERL_LOADMOD_IMPORT_OPS,
-                        newSVpvn(ATTRSMODULE, sizeof(ATTRSMODULE)-1),
-                        Nullsv,
+                        newSVpvs(ATTRSMODULE),
+                        NULL,
                         prepend_elem(OP_LIST,
                                      newSVOP(OP_CONST, 0, stashsv),
                                      prepend_elem(OP_LIST,
@@ -1617,7 +1617,7 @@ S_apply_attrs_my(pTHX_ HV *stash, OP *target, OP *attrs, OP **imopsp)
     apply_attrs(stash, PAD_SV(target->op_targ), attrs, TRUE);
 
     /* Need package name for method call. */
-    pack = newSVOP(OP_CONST, 0, newSVpvn(ATTRSMODULE, sizeof(ATTRSMODULE)-1));
+    pack = newSVOP(OP_CONST, 0, newSVpvs(ATTRSMODULE));
 
     /* Build up the real arg-list. */
     stashsv = stash ? newSVhek(HvNAME_HEK(stash)) : &PL_sv_no;
@@ -1682,7 +1682,7 @@ Perl_apply_attrs_string(pTHX_ const char *stashpv, CV *cv,
     }
 
     Perl_load_module(aTHX_ PERL_LOADMOD_IMPORT_OPS,
-                     newSVpvn(ATTRSMODULE, sizeof(ATTRSMODULE)-1),
+                    newSVpvs(ATTRSMODULE),
                      Nullsv, prepend_elem(OP_LIST,
                                  newSVOP(OP_CONST, 0, newSVpv(stashpv,0)),
                                  prepend_elem(OP_LIST,
@@ -2055,8 +2055,7 @@ OP *
 Perl_jmaybe(pTHX_ OP *o)
 {
     if (o->op_type == OP_LIST) {
-       OP *o2;
-       o2 = newSVREF(newGVOP(OP_GV, 0, gv_fetchpv(";", GV_ADD, SVt_PV))),
+       OP * const o2 = newSVREF(newGVOP(OP_GV, 0, gv_fetchpv(";", GV_ADD, SVt_PV)));
        o = convert(OP_JOIN, 0, prepend_elem(OP_LIST, o2, o));
     }
     return o;
@@ -2827,7 +2826,7 @@ Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg)
 
     if (expr->op_type == OP_CONST) {
        STRLEN plen;
-       SV *pat = ((SVOP*)expr)->op_sv;
+       SV * const pat = ((SVOP*)expr)->op_sv;
        const char *p = SvPV_const(pat, plen);
        if ((o->op_flags & OPf_SPECIAL) && (*p == ' ' && p[1] == '\0')) {
            U32 was_readonly = SvREADONLY(pat);
@@ -2895,7 +2894,7 @@ Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg)
     if (repl) {
        OP *curop;
        if (pm->op_pmflags & PMf_EVAL) {
-           curop = 0;
+           curop = NULL;
            if (CopLINE(PL_curcop) < (line_t)PL_multi_end)
                CopLINE_set(PL_curcop, (line_t)PL_multi_end);
        }
@@ -2906,7 +2905,7 @@ Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg)
            for (curop = LINKLIST(repl); curop!=repl; curop = LINKLIST(curop)) {
                if (PL_opargs[curop->op_type] & OA_DANGEROUS) {
                    if (curop->op_type == OP_GV) {
-                       GV *gv = cGVOPx_gv(curop);
+                       GV * const gv = cGVOPx_gv(curop);
                        repl_has_vars = 1;
                        if (strchr("&`'123456789+-\016\022", *GvENAME(gv)))
                            break;
diff --git a/pad.c b/pad.c
index d13cd75..3ab7497 100644 (file)
--- a/pad.c
+++ b/pad.c
@@ -411,6 +411,7 @@ Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype)
     SV *sv;
     I32 retval;
 
+    PERL_UNUSED_ARG(optype);
     ASSERT_CURPAD_ACTIVE("pad_alloc");
 
     if (AvARRAY(PL_comppad) != PL_curpad)
index 05b34bf..193f0e2 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -244,7 +244,7 @@ PP(pp_substcont)
            SvLEN_set(targ, SvLEN(dstr));
            if (DO_UTF8(dstr))
                SvUTF8_on(targ);
-           SvPV_set(dstr, (char*)0);
+           SvPV_set(dstr, NULL);
            sv_free(dstr);
 
            TAINT_IF(cx->sb_rxtainted & 1);
index c48333a..38ad000 100644 (file)
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -123,10 +123,10 @@ PP(pp_sassign)
     if (PL_tainting && PL_tainted && !SvTAINTED(left))
        TAINT_NOT;
     if (PL_op->op_private & OPpASSIGN_CV_TO_GV) {
-       SV *cv = SvRV(left);
+       SV * const cv = SvRV(left);
        const U32 cv_type = SvTYPE(cv);
        const U32 gv_type = SvTYPE(right);
-       bool got_coderef = cv_type == SVt_PVCV || cv_type == SVt_PVFM;
+       const bool got_coderef = cv_type == SVt_PVCV || cv_type == SVt_PVFM;
 
        if (!got_coderef) {
            assert(SvROK(cv));
@@ -137,7 +137,7 @@ PP(pp_sassign)
           context. */
        if (!got_coderef && gv_type != SVt_PVGV && GIMME_V == G_VOID) {
            /* Is the target symbol table currently empty?  */
-           GV *gv = gv_fetchsv(right, GV_NOINIT, SVt_PVGV);
+           GV * const gv = gv_fetchsv(right, GV_NOINIT, SVt_PVGV);
            if (SvTYPE(gv) != SVt_PVGV && !SvOK(gv)) {
                /* Good. Create a new proxy constant subroutine in the target.
                   The gv becomes a(nother) reference to the constant.  */
@@ -401,11 +401,12 @@ PP(pp_or)
 PP(pp_defined)
 {
     dVAR; dSP;
-    register SV* sv = NULL;
-    bool defined = FALSE;
+    register SV* sv;
+    bool defined;
     const int op_type = PL_op->op_type;
+    const int is_dor = (op_type == OP_DOR || op_type == OP_DORASSIGN);
 
-    if(op_type == OP_DOR || op_type == OP_DORASSIGN) {
+    if (is_dor) {
         sv = TOPs;
         if (!sv || !SvANY(sv)) {
            if (op_type == OP_DOR)
@@ -419,6 +420,7 @@ PP(pp_defined)
     } else
         DIE(aTHX_ "panic:  Invalid op (%s) in pp_defined()", OP_NAME(PL_op));
 
+    defined = FALSE;
     switch (SvTYPE(sv)) {
     case SVt_PVAV:
        if (AvMAX(sv) >= 0 || SvGMAGICAL(sv) || (SvRMAGICAL(sv) && mg_find(sv, PERL_MAGIC_tied)))
@@ -436,9 +438,10 @@ PP(pp_defined)
        SvGETMAGIC(sv);
        if (SvOK(sv))
            defined = TRUE;
+       break;
     }
-    
-    if(op_type == OP_DOR || op_type == OP_DORASSIGN) {
+
+    if (is_dor) {
         if(defined) 
             RETURN; 
         if(op_type == OP_DOR)
@@ -1105,10 +1108,8 @@ PP(pp_aassign)
 
                while (relem < lastrelem) {     /* gobble up all the rest */
                    HE *didstore;
-                   if (*relem)
-                       sv = *(relem++);
-                   else
-                       sv = &PL_sv_no, relem++;
+                   sv = *relem ? *relem : &PL_sv_no;
+                   relem++;
                    tmpstr = NEWSV(29,0);
                    if (*relem)
                        sv_setsv(tmpstr,*relem);        /* value */
@@ -1400,11 +1401,11 @@ play_it_again:
        }
        if (global) {
            if (dynpm->op_pmflags & PMf_CONTINUE) {
-               MAGIC* mg = 0;
+               MAGIC* mg = NULL;
                if (SvTYPE(TARG) >= SVt_PVMG && SvMAGIC(TARG))
                    mg = mg_find(TARG, PERL_MAGIC_regex_global);
                if (!mg) {
-                   sv_magic(TARG, (SV*)0, PERL_MAGIC_regex_global, Nullch, 0);
+                   sv_magic(TARG, NULL, PERL_MAGIC_regex_global, NULL, 0);
                    mg = mg_find(TARG, PERL_MAGIC_regex_global);
                }
                if (rx->startp[0] != -1) {
@@ -1434,7 +1435,7 @@ play_it_again:
            else
                mg = NULL;
            if (!mg) {
-               sv_magic(TARG, (SV*)0, PERL_MAGIC_regex_global, Nullch, 0);
+               sv_magic(TARG, NULL, PERL_MAGIC_regex_global, NULL, 0);
                mg = mg_find(TARG, PERL_MAGIC_regex_global);
            }
            if (rx->startp[0] != -1) {
@@ -1459,7 +1460,7 @@ yup:                                      /* Confirmed by INTUIT */
     if (RX_MATCH_COPIED(rx))
        Safefree(rx->subbeg);
     RX_MATCH_COPIED_off(rx);
-    rx->subbeg = Nullch;
+    rx->subbeg = NULL;
     if (global) {
        /* FIXME - should rx->subbeg be const char *?  */
        rx->subbeg = (char *) truebase;
@@ -1513,7 +1514,7 @@ nope:
 ret_no:
     if (global && !(dynpm->op_pmflags & PMf_CONTINUE)) {
        if (SvTYPE(TARG) >= SVt_PVMG && SvMAGIC(TARG)) {
-           MAGIC* mg = mg_find(TARG, PERL_MAGIC_regex_global);
+           MAGIC* const mg = mg_find(TARG, PERL_MAGIC_regex_global);
            if (mg)
                mg->mg_len = -1;
        }
@@ -1535,22 +1536,24 @@ Perl_do_readline(pTHX)
     register IO * const io = GvIO(PL_last_in_gv);
     register const I32 type = PL_op->op_type;
     const I32 gimme = GIMME_V;
-    MAGIC *mg;
 
-    if (io && (mg = SvTIED_mg((SV*)io, PERL_MAGIC_tiedscalar))) {
-       PUSHMARK(SP);
-       XPUSHs(SvTIED_obj((SV*)io, mg));
-       PUTBACK;
-       ENTER;
-       call_method("READLINE", gimme);
-       LEAVE;
-       SPAGAIN;
-       if (gimme == G_SCALAR) {
-           SV* result = POPs;
-           SvSetSV_nosteal(TARG, result);
-           PUSHTARG;
+    if (io) {
+       MAGIC * const mg = SvTIED_mg((SV*)io, PERL_MAGIC_tiedscalar);
+       if (mg) {
+           PUSHMARK(SP);
+           XPUSHs(SvTIED_obj((SV*)io, mg));
+           PUTBACK;
+           ENTER;
+           call_method("READLINE", gimme);
+           LEAVE;
+           SPAGAIN;
+           if (gimme == G_SCALAR) {
+               SV* const result = POPs;
+               SvSetSV_nosteal(TARG, result);
+               PUSHTARG;
+           }
+           RETURN;
        }
-       RETURN;
     }
     fp = Nullfp;
     if (io) {
@@ -1677,11 +1680,10 @@ Perl_do_readline(pTHX)
        SPAGAIN;
        XPUSHs(sv);
        if (type == OP_GLOB) {
-           char *tmps;
            const char *t1;
 
            if (SvCUR(sv) > 0 && SvCUR(PL_rs) > 0) {
-               tmps = SvEND(sv) - 1;
+               char * const tmps = SvEND(sv) - 1;
                if (*tmps == *SvPVX_const(PL_rs)) {
                    *tmps = '\0';
                    SvCUR_set(sv, SvCUR(sv) - 1);
@@ -1779,7 +1781,7 @@ PP(pp_helem)
 
        }
        he = hv_fetch_ent(hv, keysv, lval && !defer, hash);
-       svp = he ? &HeVAL(he) : 0;
+       svp = he ? &HeVAL(he) : NULL;
     }
     else {
        RETPUSHUNDEF;
@@ -1794,7 +1796,7 @@ PP(pp_helem)
            lv = sv_newmortal();
            sv_upgrade(lv, SVt_PVLV);
            LvTYPE(lv) = 'y';
-           sv_magic(lv, key2 = newSVsv(keysv), PERL_MAGIC_defelem, Nullch, 0);
+           sv_magic(lv, key2 = newSVsv(keysv), PERL_MAGIC_defelem, NULL, 0);
            SvREFCNT_dec(key2); /* sv_magic() increments refcount */
            LvTARG(lv) = SvREFCNT_inc(hv);
            LvTARGLEN(lv) = 1;
@@ -2000,7 +2002,7 @@ PP(pp_iter)
            lv = cx->blk_loop.iterlval = NEWSV(26, 0);
            sv_upgrade(lv, SVt_PVLV);
            LvTYPE(lv) = 'y';
-           sv_magic(lv, Nullsv, PERL_MAGIC_defelem, Nullch, 0);
+           sv_magic(lv, NULL, PERL_MAGIC_defelem, NULL, 0);
        }
        LvTARG(lv) = SvREFCNT_inc(av);
        LvTARGOFF(lv) = cx->blk_loop.iterix;
@@ -2143,7 +2145,7 @@ PP(pp_subst)
        }
     }
     else {
-        c = Nullch;
+       c = NULL;
        doutf8 = FALSE;
     }
     
@@ -2329,7 +2331,7 @@ PP(pp_subst)
        SvCUR_set(TARG, SvCUR(dstr));
        SvLEN_set(TARG, SvLEN(dstr));
        doutf8 |= DO_UTF8(dstr);
-       SvPV_set(dstr, (char*)0);
+       SvPV_set(dstr, NULL);
        sv_free(dstr);
 
        TAINT_IF(rxtainted & 1);
@@ -2654,7 +2656,7 @@ S_get_db_sub(pTHX_ SV **svp, CV *cv)
            SvREFCNT_dec(tmp);
        }
        else {
-           gv_efullname3(dbsv, gv, Nullch);
+           gv_efullname3(dbsv, gv, NULL);
        }
     }
     else {
@@ -2707,7 +2709,7 @@ PP(pp_entersub)
                mg_get(sv);
                if (SvROK(sv))
                    goto got_rv;
-               sym = SvPOKp(sv) ? SvPVX_const(sv) : Nullch;
+               sym = SvPOKp(sv) ? SvPVX_const(sv) : NULL;
            }
            else {
                sym = SvPV_nolen_const(sv);
@@ -2764,7 +2766,7 @@ try_autoload:
            /* sorry */
            else {
                sub_name = sv_newmortal();
-               gv_efullname3(sub_name, gv, Nullch);
+               gv_efullname3(sub_name, gv, NULL);
                DIE(aTHX_ "Undefined subroutine &%"SVf" called", sub_name);
            }
        }
@@ -2924,7 +2926,7 @@ Perl_sub_crush_depth(pTHX_ CV *cv)
        Perl_warner(aTHX_ packWARN(WARN_RECURSION), "Deep recursion on anonymous subroutine");
     else {
        SV* const tmpstr = sv_newmortal();
-       gv_efullname3(tmpstr, CvGV(cv), Nullch);
+       gv_efullname3(tmpstr, CvGV(cv), NULL);
        Perl_warner(aTHX_ packWARN(WARN_RECURSION), "Deep recursion on subroutine \"%"SVf"\"",
                tmpstr);
     }
@@ -2969,7 +2971,7 @@ PP(pp_aelem)
            lv = sv_newmortal();
            sv_upgrade(lv, SVt_PVLV);
            LvTYPE(lv) = 'y';
-           sv_magic(lv, Nullsv, PERL_MAGIC_defelem, Nullch, 0);
+           sv_magic(lv, Nullsv, PERL_MAGIC_defelem, NULL, 0);
            LvTARG(lv) = SvREFCNT_inc(av);
            LvTARGOFF(lv) = elem;
            LvTARGLEN(lv) = 1;
@@ -3053,7 +3055,7 @@ S_method_common(pTHX_ SV* meth, U32* hashp)
     GV* gv;
     HV* stash;
     STRLEN namelen;
-    const char* packname = Nullch;
+    const char* packname = NULL;
     SV *packsv = Nullsv;
     STRLEN packlen;
     const char * const name = SvPV_const(meth, namelen);
@@ -3144,7 +3146,7 @@ S_method_common(pTHX_ SV* meth, U32* hashp)
           don't want that.
        */
        const char* leaf = name;
-       const char* sep = Nullch;
+       const char* sep = NULL;
        const char* p;
 
        for (p = name; *p; p++) {
index e1c6125..fa5c59e 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -1932,8 +1932,6 @@ PP(pp_eof)
 {
     dVAR; dSP;
     GV *gv;
-    IO *io;
-    MAGIC *mg;
 
     if (MAXARG == 0) {
        if (PL_op->op_flags & OPf_SPECIAL) {    /* eof() */
@@ -1958,17 +1956,19 @@ PP(pp_eof)
     else
        gv = PL_last_in_gv = (GV*)POPs;         /* eof(FH) */
 
-    if (gv && (io = GvIO(gv))
-       && (mg = SvTIED_mg((SV*)io, PERL_MAGIC_tiedscalar)))
-    {
-       PUSHMARK(SP);
-       XPUSHs(SvTIED_obj((SV*)io, mg));
-       PUTBACK;
-       ENTER;
-       call_method("EOF", G_SCALAR);
-       LEAVE;
-       SPAGAIN;
-       RETURN;
+    if (gv) {
+       IO * const io = GvIO(gv);
+       MAGIC * mg;
+       if (io && (mg = SvTIED_mg((SV*)io, PERL_MAGIC_tiedscalar))) {
+           PUSHMARK(SP);
+           XPUSHs(SvTIED_obj((SV*)io, mg));
+           PUTBACK;
+           ENTER;
+           call_method("EOF", G_SCALAR);
+           LEAVE;
+           SPAGAIN;
+           RETURN;
+       }
     }
 
     PUSHs(boolSV(!gv || do_eof(gv)));
@@ -3543,7 +3543,7 @@ S_dooneliner(pTHX_ const char *cmd, const char *filename)
                 ; e++)
            {
                /* you don't see this */
-               char *errmsg =
+               const char * const errmsg =
 #ifdef HAS_SYS_ERRLIST
                    sys_errlist[e]
 #else
@@ -5194,18 +5194,16 @@ PP(pp_ggrent)
 {
 #ifdef HAS_GROUP
     dVAR; dSP;
-    I32 which = PL_op->op_type;
-    register char **elem;
-    register SV *sv;
-    struct group *grent;
+    const I32 which = PL_op->op_type;
+    const struct group *grent;
 
     if (which == OP_GGRNAM) {
        const char* const name = POPpbytex;
-       grent = (struct group *)getgrnam(name);
+       grent = (const struct group *)getgrnam(name);
     }
     else if (which == OP_GGRGID) {
        const Gid_t gid = POPi;
-       grent = (struct group *)getgrgid(gid);
+       grent = (const struct group *)getgrgid(gid);
     }
     else
 #ifdef HAS_GETGRENT
@@ -5216,7 +5214,9 @@ PP(pp_ggrent)
 
     EXTEND(SP, 4);
     if (GIMME != G_ARRAY) {
-       PUSHs(sv = sv_newmortal());
+       SV * const sv = sv_newmortal();
+
+       PUSHs(sv);
        if (grent) {
            if (which == OP_GGRNAM)
                sv_setiv(sv, (IV)grent->gr_gid);
@@ -5227,6 +5227,8 @@ PP(pp_ggrent)
     }
 
     if (grent) {
+       SV *sv;
+       char **elem;
        PUSHs(sv = sv_mortalcopy(&PL_sv_no));
        sv_setpv(sv, grent->gr_name);
 
diff --git a/proto.h b/proto.h
index 3bd2ced..d94b93a 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -3594,7 +3594,6 @@ STATIC bool       S_reginclass(pTHX_ const regnode *n, const U8 *p, STRLEN *lenp, bool
 
 STATIC CHECKPOINT      S_regcppush(pTHX_ I32 parenfloor);
 STATIC char*   S_regcppop(pTHX);
-STATIC char*   S_regcp_set_to(pTHX_ I32 ss);
 STATIC void    S_cache_re(pTHX_ regexp *prog)
                        __attribute__nonnull__(pTHX_1);
 
index 0657791..4dcaf80 100644 (file)
--- a/reentr.c
+++ b/reentr.c
@@ -2,7 +2,7 @@
  *
  *    reentr.c
  *
- *    Copyright (C) 2002, 2003, 2005 by Larry Wall and others
+ *    Copyright (C) 2002, 2003, 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.
index 9ee49a4..ca526c4 100644 (file)
--- a/reentr.h
+++ b/reentr.h
@@ -2,7 +2,7 @@
  *
  *    reentr.h
  *
- *    Copyright (C) 2002, 2003, 2005 by Larry Wall and others
+ *    Copyright (C) 2002, 2003, 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.
index 86b9140..12bfc1c 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -282,27 +282,6 @@ static const scan_data_t zero_scan_data =
 } STMT_END
 
 /*
- * Calls SAVEDESTRUCTOR_X if needed, then calls Perl_croak with the given
- * args. Show regex, up to a maximum length. If it's too long, chop and add
- * "...".
- */
-#define        FAIL2(pat,msg) STMT_START {                                     \
-    const char *ellipses = "";                                         \
-    IV len = RExC_end - RExC_precomp;                                  \
-                                                                       \
-    if (!SIZE_ONLY)                                                    \
-       SAVEDESTRUCTOR_X(clear_re,(void*)RExC_rx);                      \
-    if (len > RegexLengthToShowInErrorMessages) {                      \
-       /* chop 10 shorter than the max, to ensure meaning of "..." */  \
-       len = RegexLengthToShowInErrorMessages - 10;                    \
-       ellipses = "...";                                               \
-    }                                                                  \
-    S_re_croak2(aTHX_ pat, " in regex m/%.*s%s/",                      \
-           msg, (int)len, RExC_precomp, ellipses);                     \
-} STMT_END
-
-
-/*
  * Simple_vFAIL -- like FAIL, but marks the current location in the scan
  */
 #define        Simple_vFAIL(m) STMT_START {                                    \
@@ -765,7 +744,7 @@ and would end up looking like:
     DEBUG_TRIE_COMPILE_r({                                                 \
        SV *tmp;                                                           \
        if ( UTF ) {                                                       \
-           tmp = newSVpvn( "", 0 );                                       \
+           tmp = newSVpvs( "" );                                          \
            pv_uni_display( tmp, uc, len, 60, UNI_DISPLAY_REGEX );         \
        } else {                                                           \
            tmp = Perl_newSVpvf_nocontext( "%c", (int)uvc );               \
@@ -2051,7 +2030,7 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, I32 *deltap,
            if (flags & SCF_DO_SUBSTR)
                scan_commit(pRExC_state, data);
            if (UTF) {
-               U8 *s = (U8 *)STRING(scan);
+               const U8 * const s = (U8 *)STRING(scan);
                l = utf8_length(s, s + l);
                uc = utf8_to_uvchr(s, NULL);
            }
@@ -3222,21 +3201,20 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp)
     register I32 parno = 0;
     I32 flags;
     const I32 oregflags = RExC_flags;
-    I32 have_branch = 0;
-    I32 open = 0;
+    bool have_branch = 0;
+    bool is_open = 0;
 
     /* for (?g), (?gc), and (?o) warnings; warning
        about (?c) will warn about (?g) -- japhy    */
 
+#define WASTED_O  0x01
+#define WASTED_G  0x02
+#define WASTED_C  0x04
+#define WASTED_GC (0x02|0x04)
     I32 wastedflags = 0x00;
-    const I32 wasted_o  = 0x01;
-    const I32 wasted_g  = 0x02;
-    const I32 wasted_gc = 0x02 | 0x04;
-    const I32 wasted_c  = 0x04;
 
     char * parse_start = RExC_parse; /* MJD */
     char * const oregcomp_parse = RExC_parse;
-    char c;
 
     *flagp = 0;                                /* Tentatively. */
 
@@ -3246,7 +3224,7 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp)
        if (*RExC_parse == '?') { /* (?...) */
            U32 posflags = 0, negflags = 0;
            U32 *flagsp = &posflags;
-           int logical = 0;
+           bool is_logical = 0;
            const char * const seqstart = RExC_parse;
 
            RExC_parse++;
@@ -3283,7 +3261,7 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp)
                    vWARNdep(RExC_parse, "(?p{}) is deprecated - use (??{})");
                /* FALL THROUGH*/
            case '?':           /* (??...) */
-               logical = 1;
+               is_logical = 1;
                if (*RExC_parse != '{')
                    goto unknown;
                paren = *RExC_parse++;
@@ -3293,32 +3271,28 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp)
                I32 count = 1, n = 0;
                char c;
                char *s = RExC_parse;
-               SV *sv;
-               OP_4tree *sop, *rop;
 
                RExC_seen_zerolen++;
                RExC_seen |= REG_SEEN_EVAL;
                while (count && (c = *RExC_parse)) {
-                   if (c == '\\' && RExC_parse[1])
-                       RExC_parse++;
+                   if (c == '\\') {
+                       if (RExC_parse[1])
+                           RExC_parse++;
+                   }
                    else if (c == '{')
                        count++;
                    else if (c == '}')
                        count--;
                    RExC_parse++;
                }
-               if (*RExC_parse != ')')
-               {
+               if (*RExC_parse != ')') {
                    RExC_parse = s;             
                    vFAIL("Sequence (?{...}) not terminated or not {}-balanced");
                }
                if (!SIZE_ONLY) {
                    PAD *pad;
-               
-                   if (RExC_parse - 1 - s)
-                       sv = newSVpvn(s, RExC_parse - 1 - s);
-                   else
-                       sv = newSVpvs("");
+                   OP_4tree *sop, *rop;
+                   SV * const sv = newSVpvn(s, RExC_parse - 1 - s);
 
                    ENTER;
                    Perl_save_re_context(aTHX);
@@ -3347,7 +3321,7 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp)
                }
 
                nextchar(pRExC_state);
-               if (logical) {
+               if (is_logical) {
                    ret = reg_node(pRExC_state, LOGICAL);
                    if (!SIZE_ONLY)
                        ret->flags = 2;
@@ -3377,6 +3351,7 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp)
                }
                else if (RExC_parse[0] >= '1' && RExC_parse[0] <= '9' ) {
                     /* (?(1)...) */
+                   char c;
                    parno = atoi(RExC_parse++);
 
                    while (isDIGIT(*RExC_parse))
@@ -3434,7 +3409,7 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp)
 
                    if (*RExC_parse == 'o' || *RExC_parse == 'g') {
                        if (SIZE_ONLY && ckWARN(WARN_REGEXP)) {
-                           I32 wflagbit = *RExC_parse == 'o' ? wasted_o : wasted_g;
+                           const I32 wflagbit = *RExC_parse == 'o' ? WASTED_O : WASTED_G;
                            if (! (wastedflags & wflagbit) ) {
                                wastedflags |= wflagbit;
                                vWARN5(
@@ -3450,8 +3425,8 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp)
                    }
                    else if (*RExC_parse == 'c') {
                        if (SIZE_ONLY && ckWARN(WARN_REGEXP)) {
-                           if (! (wastedflags & wasted_c) ) {
-                               wastedflags |= wasted_gc;
+                           if (! (wastedflags & WASTED_C) ) {
+                               wastedflags |= WASTED_GC;
                                vWARN3(
                                    RExC_parse + 1,
                                    "Useless (%sc) - %suse /gc modifier",
@@ -3494,7 +3469,7 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp)
            ret = reganode(pRExC_state, OPEN, parno);
             Set_Node_Length(ret, 1); /* MJD */
             Set_Node_Offset(ret, RExC_parse); /* MJD */
-           open = 1;
+           is_open = 1;
        }
     }
     else                        /* ! paren */
@@ -3523,7 +3498,7 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp)
     else if (paren == ':') {
        *flagp |= flags&SIMPLE;
     }
-    if (open) {                                /* Starts with OPEN. */
+    if (is_open) {                             /* Starts with OPEN. */
        regtail(pRExC_state, ret, br);          /* OPEN -> first. */
     }
     else if (paren != '?')             /* Not Conditional */
index a65ded7..7ca4667 100644 (file)
--- a/regexec.c
+++ b/regexec.c
@@ -285,18 +285,6 @@ S_regcppop(pTHX)
     return input;
 }
 
-STATIC char *
-S_regcp_set_to(pTHX_ I32 ss)
-{
-    dVAR;
-    const I32 tmp = PL_savestack_ix;
-
-    PL_savestack_ix = ss;
-    regcppop();
-    PL_savestack_ix = tmp;
-    return Nullch;
-}
-
 typedef struct re_cc_state
 {
     I32 ss;
@@ -1193,8 +1181,7 @@ S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, const char *strend, I32
                if (s == PL_bostr)
                    tmp = '\n';
                else {
-                   U8 *r = reghop3((U8*)s, -1, (U8*)PL_bostr);
-               
+                   U8 * const r = reghop3((U8*)s, -1, (U8*)PL_bostr);
                    tmp = utf8n_to_uvchr(r, UTF8SKIP(r), 0, 0);
                }
                tmp = ((OP(c) == BOUND ?
@@ -1236,8 +1223,7 @@ S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, const char *strend, I32
                if (s == PL_bostr)
                    tmp = '\n';
                else {
-                   U8 *r = reghop3((U8*)s, -1, (U8*)PL_bostr);
-               
+                   U8 * const r = reghop3((U8*)s, -1, (U8*)PL_bostr);
                    tmp = utf8n_to_uvchr(r, UTF8SKIP(r), 0, 0);
                }
                tmp = ((OP(c) == NBOUND ?
@@ -1651,8 +1637,8 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
     const bool do_utf8 = DO_UTF8(sv);
     const I32 multiline = prog->reganch & PMf_MULTILINE;
 #ifdef DEBUGGING
-    SV *dsv0 = PERL_DEBUG_PAD_ZERO(0);
-    SV *dsv1 = PERL_DEBUG_PAD_ZERO(1);
+    SV * const dsv0 = PERL_DEBUG_PAD_ZERO(0);
+    SV * const dsv1 = PERL_DEBUG_PAD_ZERO(1);
 #endif
 
     GET_RE_DEBUG_FLAGS_DECL;
@@ -2417,9 +2403,9 @@ S_regmatch(pTHX_ regnode *prog)
 #endif
     register const bool do_utf8 = PL_reg_match_utf8;
 #ifdef DEBUGGING
-    SV *dsv0 = PERL_DEBUG_PAD_ZERO(0);
-    SV *dsv1 = PERL_DEBUG_PAD_ZERO(1);
-    SV *dsv2 = PERL_DEBUG_PAD_ZERO(2);
+    SV * const dsv0 = PERL_DEBUG_PAD_ZERO(0);
+    SV * const dsv1 = PERL_DEBUG_PAD_ZERO(1);
+    SV * const dsv2 = PERL_DEBUG_PAD_ZERO(2);
 
     SV *re_debug_flags = NULL;
 #endif
@@ -2438,7 +2424,7 @@ S_regmatch(pTHX_ regnode *prog)
     while (scan != NULL) {
 
         DEBUG_EXECUTE_r( {
-           SV *prop = sv_newmortal();
+           SV * const prop = sv_newmortal();
            const int docolor = *PL_colors[0];
            const int taill = (docolor ? 10 : 7); /* 3 chars for "> <" */
            int l = (PL_regeol - locinput) > taill ? taill : (PL_regeol - locinput);
@@ -2762,7 +2748,7 @@ S_regmatch(pTHX_ regnode *prog)
                                    best = cur;
                        }
                        DEBUG_EXECUTE_r({
-                           SV **tmp = av_fetch( trie->words, accept_buff[ best ].wordnum - 1, 0 );
+                           SV ** const tmp = av_fetch( trie->words, accept_buff[ best ].wordnum - 1, 0 );
                            PerlIO_printf( Perl_debug_log, "%*s  %strying alternation #%d <%s> at 0x%p%s\n",
                                REPORT_CODE_OFF+PL_regindent*2, "", PL_colors[4],
                                accept_buff[best].wordnum,
@@ -3204,11 +3190,11 @@ S_regmatch(pTHX_ regnode *prog)
        case EVAL:
        {
            dSP;
-           OP_4tree *oop = PL_op;
-           COP *ocurcop = PL_curcop;
+           OP_4tree * const oop = PL_op;
+           COP * const ocurcop = PL_curcop;
            PAD *old_comppad;
            SV *ret;
-           struct regexp *oreg = PL_reg_re;
+           struct regexp * const oreg = PL_reg_re;
        
            n = ARG(scan);
            PL_op = (OP_4tree*)PL_regdata->data[n];
@@ -3217,7 +3203,7 @@ S_regmatch(pTHX_ regnode *prog)
            PL_regendp[0] = PL_reg_magic->mg_len = locinput - PL_bostr;
 
            {
-               SV **before = SP;
+               SV ** const before = SP;
                CALLRUNOPS(aTHX);                       /* Scalar context. */
                SPAGAIN;
                if (SP == before)
@@ -3234,7 +3220,7 @@ S_regmatch(pTHX_ regnode *prog)
            if (logical) {
                if (logical == 2) {     /* Postponed subexpression. */
                    regexp *re;
-                   MAGIC *mg = Null(MAGIC*);
+                   MAGIC *mg = NULL;
                    re_cc_state state;
                    CHECKPOINT cp, lastcp;
                     int toggleutf;
@@ -3255,7 +3241,7 @@ S_regmatch(pTHX_ regnode *prog)
                    }
                    else {
                        STRLEN len;
-                       const char *t = SvPV_const(ret, len);
+                       const char * const t = SvPV_const(ret, len);
                        PMOP pm;
                        char * const oprecomp = PL_regprecomp;
                        const I32 osize = PL_regsize;
@@ -3494,7 +3480,7 @@ S_regmatch(pTHX_ regnode *prog)
 
                CHECKPOINT cp, lastcp;
                CURCUR* cc = PL_regcc;
-               char *lastloc = cc->lastloc; /* Detection of 0-len. */
+               char * const lastloc = cc->lastloc; /* Detection of 0-len. */
                I32 cache_offset = 0, cache_bit = 0;
                
                n = cc->cur + 1;        /* how many we know we matched */
@@ -3698,12 +3684,10 @@ S_regmatch(pTHX_ regnode *prog)
                    next = inner;       /* Avoid recursion. */
                else {
                    const I32 lastparen = *PL_reglastparen;
-                   I32 unwind1;
-                   re_unwind_branch_t *uw;
-
                    /* Put unwinding data on stack */
-                   unwind1 = SSNEWt(1,re_unwind_branch_t);
-                   uw = SSPTRt(unwind1,re_unwind_branch_t);
+                   const I32 unwind1 = SSNEWt(1,re_unwind_branch_t);
+                   re_unwind_branch_t * const uw = SSPTRt(unwind1,re_unwind_branch_t);
+
                    uw->prev = unwind;
                    unwind = unwind1;
                    uw->type = ((c1 == BRANCH)
@@ -4152,14 +4136,22 @@ S_regmatch(pTHX_ regnode *prog)
                re_cc_state *cur_call_cc = PL_reg_call_cc;
                CURCUR *cctmp = PL_regcc;
                regexp *re = PL_reg_re;
-               CHECKPOINT cp, lastcp;
-               
-               cp = regcppush(0);      /* Save *all* the positions. */
+               CHECKPOINT lastcp;
+               I32 tmp;
+
+               /* Save *all* the positions. */
+               const CHECKPOINT cp = regcppush(0);
                REGCP_SET(lastcp);
-               regcp_set_to(PL_reg_call_cc->ss); /* Restore parens of
-                                                   the caller. */
-               PL_reginput = locinput; /* Make position available to
-                                          the callcc. */
+
+               /* Restore parens of the caller. */
+               tmp = PL_savestack_ix;
+               PL_savestack_ix = PL_reg_call_cc->ss;
+               regcppop();
+               PL_savestack_ix = tmp;
+
+               /* Make position available to the callcc. */
+               PL_reginput = locinput;
+
                cache_re(PL_reg_call_cc->re);
                PL_regcc = PL_reg_call_cc->cc;
                PL_reg_call_cc = PL_reg_call_cc->prev;
@@ -4298,13 +4290,13 @@ no:
 no_final:
 do_no:
     if (unwind) {
-       re_unwind_t *uw = SSPTRt(unwind,re_unwind_t);
+       re_unwind_t * const uw = SSPTRt(unwind,re_unwind_t);
 
        switch (uw->type) {
        case RE_UNWIND_BRANCH:
        case RE_UNWIND_BRANCHJ:
        {
-           re_unwind_branch_t *uwb = &(uw->branch);
+           re_unwind_branch_t * const uwb = &(uw->branch);
            const I32 lastparen = uwb->lastparen;
        
            REGCP_UNWIND(uwb->lastcp);
@@ -4586,7 +4578,7 @@ S_regrepeat(pTHX_ const regnode *p, I32 max)
 
     DEBUG_r({
                SV *re_debug_flags = NULL;
-               SV *prop = sv_newmortal();
+               SV * const prop = sv_newmortal();
                 GET_RE_DEBUG_FLAGS;
                 DEBUG_EXECUTE_r({
                regprop(prop, p);
diff --git a/sv.c b/sv.c
index b2cd1d8..72412f7 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -1090,14 +1090,14 @@ Perl_sv_upgrade(pTHX_ register SV *sv, U32 new_type)
 
        /* Could put this in the else clause below, as PVMG must have SvPVX
           0 already (the assertion above)  */
-       SvPV_set(sv, (char*)0);
+       SvPV_set(sv, NULL);
 
        if (old_type >= SVt_PVMG) {
            SvMAGIC_set(sv, ((XPVMG*)old_body)->xmg_magic);
            SvSTASH_set(sv, ((XPVMG*)old_body)->xmg_stash);
        } else {
-           SvMAGIC_set(sv, 0);
-           SvSTASH_set(sv, 0);
+           SvMAGIC_set(sv, NULL);
+           SvSTASH_set(sv, NULL);
        }
        break;
 
@@ -1149,7 +1149,7 @@ Perl_sv_upgrade(pTHX_ register SV *sv, U32 new_type)
        if (new_type == SVt_PVIO)
            IoPAGE_LEN(sv) = 60;
        if (old_type < SVt_RV)
-           SvPV_set(sv, 0);
+           SvPV_set(sv, NULL);
        break;
     default:
        Perl_croak(aTHX_ "panic: sv_upgrade to unknown type %lu",
@@ -3394,7 +3394,7 @@ Perl_sv_setsv_flags(pTHX_ SV *dstr, register SV *sstr, I32 flags)
 
                 SvTEMP_off(dstr);
                 (void)SvOK_off(sstr);  /* NOTE: nukes most SvFLAGS on sstr */
-                SvPV_set(sstr, Nullch);
+                SvPV_set(sstr, NULL);
                 SvLEN_set(sstr, 0);
                 SvCUR_set(sstr, 0);
                 SvTEMP_off(sstr);
@@ -3781,7 +3781,7 @@ Perl_sv_force_normal_flags(pTHX_ register SV *sv, U32 flags)
             SvFAKE_off(sv);
             SvREADONLY_off(sv);
             /* This SV doesn't own the buffer, so need to Newx() a new one:  */
-            SvPV_set(sv, (char*)0);
+            SvPV_set(sv, NULL);
             SvLEN_set(sv, 0);
             if (flags & SV_COW_DROP_PV) {
                 /* OK, so we don't need to copy our buffer.  */
@@ -8939,8 +8939,8 @@ ptr_table_* functions.
 #define io_dup_inc(s,t)        (IO*)SvREFCNT_inc(sv_dup((SV*)s,t))
 #define gv_dup(s,t)    (GV*)sv_dup((SV*)s,t)
 #define gv_dup_inc(s,t)        (GV*)SvREFCNT_inc(sv_dup((SV*)s,t))
-#define SAVEPV(p)      (p ? savepv(p) : Nullch)
-#define SAVEPVN(p,n)   (p ? savepvn(p,n) : Nullch)
+#define SAVEPV(p)      ((p) ? savepv(p) : NULL)
+#define SAVEPVN(p,n)   ((p) ? savepvn(p,n) : NULL)
 
 
 /* Duplicate a regexp. Required reading: pregcomp() and pregfree() in
@@ -9372,7 +9372,7 @@ Perl_rvpv_dup(pTHX_ SV *dstr, const SV *sstr, CLONE_PARAMS* param)
        if (SvTYPE(dstr) == SVt_RV)
            SvRV_set(dstr, NULL);
        else
-           SvPV_set(dstr, 0);
+           SvPV_set(dstr, NULL);
     }
 }
 
@@ -9385,7 +9385,7 @@ Perl_sv_dup(pTHX_ const SV *sstr, CLONE_PARAMS* param)
     SV *dstr;
 
     if (!sstr || SvTYPE(sstr) == SVTYPEMASK)
-       return Nullsv;
+       return NULL;
     /* look for it in the table first */
     dstr = (SV*)ptr_table_fetch(PL_ptr_table, sstr);
     if (dstr)
@@ -10851,7 +10851,7 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
         * orphaned
         */
        for (i = 0; i<= proto_perl->Ttmps_ix; i++) {
-           SV *nsv = (SV*)ptr_table_fetch(PL_ptr_table,
+           SV * const nsv = (SV*)ptr_table_fetch(PL_ptr_table,
                    proto_perl->Ttmps_stack[i]);
            if (nsv && !SvREFCNT(nsv)) {
                EXTEND_MORTAL(1);
diff --git a/toke.c b/toke.c
index 139a121..d539b07 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -878,6 +878,9 @@ S_check_uni(pTHX)
     for (s = PL_last_uni; isALNUM_lazy_if(s,UTF) || *s == '-'; s++) ;
     if ((t = strchr(s, '(')) && t < PL_bufptr)
        return;
+
+    /* XXX Things like this are just so nasty.  We shouldn't be modifying
+    source code, even if we realquick set it back. */
     if (ckWARN_d(WARN_AMBIGUOUS)){
        const char ch = *s;
         *s = '\0';
@@ -9384,15 +9387,13 @@ STATIC char *
 S_scan_ident(pTHX_ register char *s, register const char *send, char *dest, STRLEN destlen, I32 ck_uni)
 {
     dVAR;
-    register char *d;
-    register char *e;
-    char *bracket = Nullch;
+    char *bracket = NULL;
     char funny = *s++;
+    register char *d = dest;
+    register char * const e = d + destlen + 3;    /* two-character token, ending NUL */
 
     if (isSPACE(*s))
        s = skipspace(s);
-    d = dest;
-    e = d + destlen - 3;       /* two-character token, ending NUL */
     if (isDIGIT(*s)) {
        while (isDIGIT(*s)) {
            if (d >= e)
@@ -9467,15 +9468,15 @@ S_scan_ident(pTHX_ register char *s, register const char *send, char *dest, STRL
        if (isIDFIRST_lazy_if(d,UTF)) {
            d++;
            if (UTF) {
-               e = s;
-               while ((e < send && isALNUM_lazy_if(e,UTF)) || *e == ':') {
-                   e += UTF8SKIP(e);
-                   while (e < send && UTF8_IS_CONTINUED(*e) && is_utf8_mark((U8*)e))
-                       e += UTF8SKIP(e);
+               char *end = s;
+               while ((end < send && isALNUM_lazy_if(end,UTF)) || *end == ':') {
+                   end += UTF8SKIP(end);
+                   while (end < send && UTF8_IS_CONTINUED(*end) && is_utf8_mark((U8*)end))
+                       end += UTF8SKIP(end);
                }
-               Copy(s, d, e - s, char);
-               d += e - s;
-               s = e;
+               Copy(s, d, end - s, char);
+               d += end - s;
+               s = end;
            }
            else {
                while ((isALNUM(*s) || *s == ':') && d < e)
@@ -9563,9 +9564,10 @@ S_scan_pat(pTHX_ char *start, I32 type)
     dVAR;
     PMOP *pm;
     char *s = scan_str(start,FALSE,FALSE);
+    const char * const valid_flags = (type == OP_QR) ? "iomsx" : "iogcmsx";
 
     if (!s) {
-       char * const delimiter = skipspace(start);
+       const char * const delimiter = skipspace(start);
        Perl_croak(aTHX_ *delimiter == '?'
                   ? "Search pattern not terminated or ternary operator parsed as search pattern"
                   : "Search pattern not terminated" );
@@ -9574,14 +9576,8 @@ S_scan_pat(pTHX_ char *start, I32 type)
     pm = (PMOP*)newPMOP(type, 0);
     if (PL_multi_open == '?')
        pm->op_pmflags |= PMf_ONCE;
-    if(type == OP_QR) {
-       while (*s && strchr("iomsx", *s))
-           pmflag(&pm->op_pmflags,*s++);
-    }
-    else {
-       while (*s && strchr("iogcmsx", *s))
-           pmflag(&pm->op_pmflags,*s++);
-    }
+    while (*s && strchr(valid_flags, *s))
+       pmflag(&pm->op_pmflags,*s++);
     /* issue a warning if /c is specified,but /g is not */
     if ((pm->op_pmflags & PMf_CONTINUE) && !(pm->op_pmflags & PMf_GLOBAL)
            && ckWARN(WARN_REGEXP))
@@ -9643,12 +9639,12 @@ S_scan_subst(pTHX_ char *start)
     }
 
     if (es) {
-       SV *repl;
+       SV * const repl = newSVpvs("");
+
        PL_sublex_info.super_bufptr = s;
        PL_sublex_info.super_bufend = PL_bufend;
        PL_multi_end = 0;
        pm->op_pmflags |= PMf_EVAL;
-       repl = newSVpvs("");
        while (es-- > 0)
            sv_catpv(repl, es ? "eval " : "do ");
        sv_catpvs(repl, "{ ");
@@ -9819,8 +9815,8 @@ S_scan_heredoc(pTHX_ register char *s)
     PL_multi_open = PL_multi_close = '<';
     term = *PL_tokenbuf;
     if (PL_lex_inwhat == OP_SUBST && PL_in_eval && !PL_rsfp) {
-       char *bufptr = PL_sublex_info.super_bufptr;
-       char *bufend = PL_sublex_info.super_bufend;
+       char * const bufptr = PL_sublex_info.super_bufptr;
+       char * const bufend = PL_sublex_info.super_bufend;
        char * const olds = s - SvCUR(herewas);
        s = strchr(bufptr, '\n');
        if (!s)
@@ -9892,7 +9888,7 @@ S_scan_heredoc(pTHX_ register char *s)
            PL_bufend[-1] = '\n';
 #endif
        if (PERLDB_LINE && PL_curstash != PL_debstash) {
-           SV *sv = NEWSV(88,0);
+           SV * const sv = NEWSV(88,0);
 
            sv_upgrade(sv, SVt_PVMG);
            sv_setsv(sv,PL_linestr);
@@ -9951,13 +9947,12 @@ S_scan_inputsymbol(pTHX_ char *start)
 {
     dVAR;
     register char *s = start;          /* current position in buffer */
-    register char *d;
-    const char *e;
     char *end;
     I32 len;
 
-    d = PL_tokenbuf;                   /* start of temp holding space */
-    e = PL_tokenbuf + sizeof PL_tokenbuf;      /* end of temp holding space */
+    char *d = PL_tokenbuf;                                     /* start of temp holding space */
+    const char * const e = PL_tokenbuf + sizeof PL_tokenbuf;   /* end of temp holding space */
+
     end = strchr(s, '\n');
     if (!end)
        end = PL_bufend;
@@ -10003,7 +9998,7 @@ S_scan_inputsymbol(pTHX_ char *start)
     }
     else {
        bool readline_overriden = FALSE;
-       GV *gv_readline = Nullgv;
+       GV *gv_readline;
        GV **gvp;
        /* we're in a filehandle read situation */
        d = PL_tokenbuf;
@@ -10013,7 +10008,8 @@ S_scan_inputsymbol(pTHX_ char *start)
            Copy("ARGV",d,5,char);
 
        /* Check whether readline() is overriden */
-       if (((gv_readline = gv_fetchpv("readline", 0, SVt_PVCV))
+       gv_readline = gv_fetchpv("readline", 0, SVt_PVCV);
+       if ((gv_readline
                && GvCVu(gv_readline) && GvIMPORTED_CV(gv_readline))
                ||
                ((gvp = (GV**)hv_fetch(PL_globalstash, "readline", 8, FALSE))
@@ -10032,16 +10028,16 @@ S_scan_inputsymbol(pTHX_ char *start)
            */
            if ((tmp = pad_findmy(d)) != NOT_IN_PAD) {
                if (PAD_COMPNAME_FLAGS(tmp) & SVpad_OUR) {
-                   HV *stash = PAD_COMPNAME_OURSTASH(tmp);
-                   HEK *stashname = HvNAME_HEK(stash);
-                   SV *sym = sv_2mortal(newSVhek(stashname));
+                   HV * const stash = PAD_COMPNAME_OURSTASH(tmp);
+                   HEK * const stashname = HvNAME_HEK(stash);
+                   SV * const sym = sv_2mortal(newSVhek(stashname));
                    sv_catpvs(sym, "::");
                    sv_catpv(sym, d+1);
                    d = SvPVX(sym);
                    goto intro_sym;
                }
                else {
-                   OP *o = newOP(OP_PADSV, 0);
+                   OP * const o = newOP(OP_PADSV, 0);
                    o->op_targ = tmp;
                    PL_lex_op = readline_overriden
                        ? (OP*)newUNOP(OP_ENTERSUB, OPf_STACKED,
@@ -10077,7 +10073,7 @@ intro_sym:
        /* If it's none of the above, it must be a literal filehandle
           (<Foo::BAR> or <FOO>) so build a simple readline OP */
        else {
-           GV *gv = gv_fetchpv(d, GV_ADD, SVt_PVIO);
+           GV * const gv = gv_fetchpv(d, GV_ADD, SVt_PVIO);
            PL_lex_op = readline_overriden
                ? (OP*)newUNOP(OP_ENTERSUB, OPf_STACKED,
                        append_elem(OP_LIST,
@@ -10200,8 +10196,8 @@ S_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims)
                int offset = s - SvPVX_const(PL_linestr);
                const bool found = sv_cat_decode(sv, PL_encoding, PL_linestr,
                                           &offset, (char*)termstr, termlen);
-               const char *ns = SvPVX_const(PL_linestr) + offset;
-               char *svlast = SvEND(sv) - 1;
+               const char * const ns = SvPVX_const(PL_linestr) + offset;
+               char * const svlast = SvEND(sv) - 1;
 
                for (; s < ns; s++) {
                    if (*s == '\n' && !PL_rsfp)
@@ -10767,7 +10763,7 @@ Perl_scan_num(pTHX_ const char *start, YYSTYPE* lvalp)
 
        if (!floatit) {
            UV uv;
-            int flags = grok_number (PL_tokenbuf, d - PL_tokenbuf, &uv);
+           const int flags = grok_number (PL_tokenbuf, d - PL_tokenbuf, &uv);
 
             if (flags == IS_NUMBER_IN_UV) {
               if (uv <= IV_MAX)
@@ -10820,7 +10816,7 @@ S_scan_formline(pTHX_ register char *s)
     dVAR;
     register char *eol;
     register char *t;
-    SV *stuff = newSVpvs("");
+    SV * const stuff = newSVpvs("");
     bool needargs = FALSE;
     bool eofmt = FALSE;
 
@@ -10924,7 +10920,7 @@ Perl_start_subparse(pTHX_ I32 is_format, U32 flags)
 {
     dVAR;
     const I32 oldsavestack_ix = PL_savestack_ix;
-    CV* outsidecv = PL_compcv;
+    CV* const outsidecv = PL_compcv;
 
     if (PL_compcv) {
        assert(SvTYPE(PL_compcv) == SVt_PVCV);
@@ -11014,7 +11010,7 @@ Perl_yyerror(pTHX_ const char *s)
            where = "within string";
     }
     else {
-       SV *where_sv = sv_2mortal(newSVpvs("next char "));
+       SV * const where_sv = sv_2mortal(newSVpvs("next char "));
        if (yychar < 32)
            Perl_sv_catpvf(aTHX_ where_sv, "^%c", toCTRL(yychar));
        else if (isPRINT_LC(yychar))
index af4ce9a..af4c297 100755 (executable)
@@ -47,6 +47,8 @@ d_attribute_noreturn='undef'
 d_attribute_pure='undef'
 d_attribute_unused='undef'
 d_attribute_warn_unused_result='undef'
+d_builtin_expect='undef'
+d_builtin_choose_expr='undef'
 d_bcmp='undef'
 d_bcopy='undef'
 d_bsd='undef'
diff --git a/util.c b/util.c
index 48cc63a..c503dda 100644 (file)
--- a/util.c
+++ b/util.c
@@ -929,7 +929,7 @@ S_mess_alloc(pTHX)
     Newxz(any, 1, XPVMG);
     SvFLAGS(sv) = SVt_PVMG;
     SvANY(sv) = (void*)any;
-    SvPV_set(sv, 0);
+    SvPV_set(sv, NULL);
     SvREFCNT(sv) = 1 << 30; /* practically infinite */
     PL_mess_sv = sv;
     return sv;