diff options
-rw-r--r-- | pp.c | 14 | ||||
-rw-r--r-- | util.c | 14 |
2 files changed, 13 insertions, 15 deletions
@@ -707,7 +707,6 @@ PP(pp_study) { dVAR; dSP; dPOPss; register unsigned char *s; - register I32 pos; register I32 ch; register I32 *sfirst; register I32 *snext; @@ -729,9 +728,8 @@ PP(pp_study) */ RETPUSHNO; } - pos = len; - Newx(sfirst, 256 + pos, I32); + Newx(sfirst, 256 + len, I32); if (!sfirst) DIE(aTHX_ "do_study: out of memory"); @@ -746,13 +744,13 @@ PP(pp_study) for (ch = 256; ch; --ch) *snext++ = -1; - while (--pos >= 0) { - register const I32 ch = s[pos]; + while (len-- > 0) { + const U8 ch = s[len]; if (sfirst[ch] >= 0) - snext[pos] = sfirst[ch]; + snext[len] = sfirst[ch]; else - snext[pos] = -1; - sfirst[ch] = pos; + snext[len] = -1; + sfirst[ch] = (I32)len; } RETPUSHYES; @@ -860,7 +860,7 @@ Perl_screaminstr(pTHX_ SV *bigstr, SV *littlestr, I32 start_shift, I32 end_shift register const unsigned char *little; register I32 stop_pos; register const unsigned char *littleend; - I32 found = 0; + bool found = FALSE; const MAGIC * mg; I32 *screamfirst; I32 *screamnext; @@ -916,19 +916,19 @@ Perl_screaminstr(pTHX_ SV *bigstr, SV *littlestr, I32 start_shift, I32 end_shift } big -= previous; do { - register const unsigned char *s, *x; if (pos >= stop_pos) break; if (big[pos] == first) { - for (x=big+pos+1,s=little; s < littleend; /**/ ) { - if (*s++ != *x++) { - s--; + const unsigned char *s = little; + const unsigned char *x = big + pos + 1; + while (s < littleend) { + if (*s != *x++) break; - } + ++s; } if (s == littleend) { *old_posp = pos; if (!last) return (char *)(big+pos); - found = 1; + found = TRUE; } } pos = screamnext[pos]; |