This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Better diagnostics from io/utf8.t
[perl5.git] / regcomp.c
index bb63661..dd2188f 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -425,7 +425,7 @@ static const scan_data_t zero_scan_data =
        MJD_OFFSET_DEBUG(("** (%d) offset of node %d is %d.\n",         \
                __LINE__, (node), (byte)));                             \
        if((node) < 0) {                                                \
-           Perl_croak(aTHX_ "value of node is %d in Offset macro", node); \
+           Perl_croak(aTHX_ "value of node is %d in Offset macro", (int)(node)); \
        } else {                                                        \
            RExC_offsets[2*(node)-1] = (byte);                          \
        }                                                               \
@@ -439,9 +439,9 @@ static const scan_data_t zero_scan_data =
 #define Set_Node_Length_To_R(node,len) STMT_START {                    \
     if (! SIZE_ONLY) {                                                 \
        MJD_OFFSET_DEBUG(("** (%d) size of node %d is %d.\n",           \
-               __LINE__, (node), (len)));                              \
+               __LINE__, (int)(node), (int)(len)));                    \
        if((node) < 0) {                                                \
-           Perl_croak(aTHX_ "value of node is %d in Length macro", node); \
+           Perl_croak(aTHX_ "value of node is %d in Length macro", (int)(node)); \
        } else {                                                        \
            RExC_offsets[2*(node)] = (len);                             \
        }                                                               \
@@ -1540,7 +1540,8 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
 
 
 STATIC I32
-S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, I32 *deltap, regnode *last, scan_data_t *data, U32 flags, U32 depth)
+S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, I32 *deltap,
+                       regnode *last, scan_data_t *data, U32 flags, U32 depth)
                        /* scanp: Start here (read-write). */
                        /* deltap: Write maxlen-minlen here. */
                        /* last: Stop before this one. */
@@ -2001,7 +2002,7 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, I32 *deltap, reg
                }
                sv_catpvn(data->last_found, STRING(scan), STR_LEN(scan));
                {
-                   SV * sv = data->last_found;
+                   SV * const sv = data->last_found;
                    MAGIC * const mg = SvUTF8(sv) && SvMAGICAL(sv) ?
                        mg_find(sv, PERL_MAGIC_utf8) : NULL;
                    if (mg && mg->mg_len >= 0)
@@ -5778,12 +5779,12 @@ Perl_regprop(pTHX_ SV *sv, const regnode *o)
     k = PL_regkind[(U8)OP(o)];
 
     if (k == EXACT) {
-        SV *dsv = sv_2mortal(newSVpvn("", 0));
+       SV * const dsv = sv_2mortal(newSVpvn("", 0));
        /* Using is_utf8_string() is a crude hack but it may
         * be the best for now since we have no flag "this EXACTish
         * node was UTF-8" --jhi */
        const bool do_utf8 = is_utf8_string((U8*)STRING(o), STR_LEN(o));
-       const char *s = do_utf8 ?
+       const char * const s = do_utf8 ?
          pv_uni_display(dsv, (U8*)STRING(o), STR_LEN(o), 60,
                         UNI_DISPLAY_REGEX) :
          STRING(o);
@@ -5818,7 +5819,7 @@ Perl_regprop(pTHX_ SV *sv, const regnode *o)
        Perl_sv_catpvf(aTHX_ sv, "[%d]", o->flags);     /* 2: embedded, otherwise 1 */
     else if (k == ANYOF) {
        int i, rangestart = -1;
-       U8 flags = ANYOF_FLAGS(o);
+       const U8 flags = ANYOF_FLAGS(o);
        const char * const anyofs[] = { /* Should be synchronized with
                                         * ANYOF_ #xdefines in regcomp.h */
            "\\w",
@@ -5889,7 +5890,7 @@ Perl_regprop(pTHX_ SV *sv, const regnode *o)
 
        {
            SV *lv;
-           SV *sw = regclass_swash(o, FALSE, &lv, 0);
+           SV * const sw = regclass_swash(o, FALSE, &lv, 0);
        
            if (lv) {
                if (sw) {
@@ -5902,20 +5903,21 @@ Perl_regprop(pTHX_ SV *sv, const regnode *o)
                            if (rangestart == -1)
                                rangestart = i;
                        } else if (rangestart != -1) {
-                           U8 *p;
-                       
                            if (i <= rangestart + 3)
                                for (; rangestart < i; rangestart++) {
-                                   U8 *e;
-                                   for(e = uvchr_to_utf8(s, rangestart), p = s; p < e; p++)
+                                   const U8 * const e = uvchr_to_utf8(s,rangestart);
+                                   U8 *p;
+                                   for(p = s; p < e; p++)
                                        put_byte(sv, *p);
                                }
                            else {
-                               U8 *e;
-                               for (e = uvchr_to_utf8(s, rangestart), p = s; p < e; p++)
+                               const U8 *e = uvchr_to_utf8(s,rangestart);
+                               U8 *p;
+                               for (p = s; p < e; p++)
                                    put_byte(sv, *p);
-                               sv_catpv(sv, "-");
-                               for (e = uvchr_to_utf8(s, i - 1), p = s; p < e; p++)
+                               sv_catpvn(sv, "-", 1);
+                               e = uvchr_to_utf8(s, i-1);
+                               for (p = s; p < e; p++)
                                    put_byte(sv, *p);
                                }
                                rangestart = -1;
@@ -5932,7 +5934,7 @@ Perl_regprop(pTHX_ SV *sv, const regnode *o)
                    while(*s && *s != '\n') s++;
                
                    if (*s == '\n') {
-                       const char *t = ++s;
+                       const char * const t = ++s;
                        
                        while (*s) {
                            if (*s == '\n')
@@ -5963,7 +5965,7 @@ Perl_re_intuit_string(pTHX_ regexp *prog)
     GET_RE_DEBUG_FLAGS_DECL;
     DEBUG_COMPILE_r(
        {
-           const char *s = SvPV_nolen_const(prog->check_substr
+           const char * const s = SvPV_nolen_const(prog->check_substr
                      ? prog->check_substr : prog->check_utf8);
 
            if (!PL_colorset) reginitcolors();
@@ -6070,7 +6072,7 @@ Perl_pregfree(pTHX_ struct regexp *r)
                        reg_trie_data *trie=(reg_trie_data*)r->data->data[n];
                        U32 refcount;
                        OP_REFCNT_LOCK;
-                       refcount = trie->refcount--;
+                       refcount = --trie->refcount;
                        OP_REFCNT_UNLOCK;
                        if ( !refcount ) {
                            Safefree(trie->charmap);
@@ -6216,8 +6218,8 @@ Perl_save_re_context(pTHX)
            for (i = 1; i <= rx->nparens; i++) {
                GV *mgv;
                char digits[TYPE_CHARS(long)];
-               sprintf(digits, "%lu", (long)i);
-               if ((mgv = gv_fetchpv(digits, FALSE, SVt_PV)))
+               const STRLEN len = my_sprintf(digits, "%lu", (long)i);
+               if ((mgv = gv_fetchpvn_flags(digits, len, FALSE, SVt_PV)))
                    save_scalar(mgv);
            }
        }