# define PERL_NO_GET_CONTEXT
#endif
-/*SUPPRESS 112*/
/*
* pregcomp and pregexec -- regsub and regerror are not used in perl
*
#define HOP3c(pos,off,lim) ((char*)HOP3(pos,off,lim))
#define HOPMAYBE3c(pos,off,lim) ((char*)HOPMAYBE3(pos,off,lim))
-#define LOAD_UTF8_CHARCLASS(a,b) STMT_START { if (!CAT2(PL_utf8_,a)) { ENTER; save_re_context(); (void)CAT2(is_utf8_, a)((const U8*)b); LEAVE; } } STMT_END
+#define LOAD_UTF8_CHARCLASS(class,str) STMT_START { \
+ if (!CAT2(PL_utf8_,class)) { bool ok; ENTER; save_re_context(); ok=CAT2(is_utf8_,class)((const U8*)str); assert(ok); LEAVE; } } STMT_END
+#define LOAD_UTF8_CHARCLASS_ALNUM() LOAD_UTF8_CHARCLASS(alnum,"a")
+#define LOAD_UTF8_CHARCLASS_DIGIT() LOAD_UTF8_CHARCLASS(digit,"0")
+#define LOAD_UTF8_CHARCLASS_SPACE() LOAD_UTF8_CHARCLASS(space," ")
+#define LOAD_UTF8_CHARCLASS_MARK() LOAD_UTF8_CHARCLASS(mark, "\xcd\x86")
/* for use after a quantifier and before an EXACT-like node -- japhy */
#define JUMPABLE(rn) ( \
/* Assumptions: if ANCH_GPOS, then strpos is anchored. XXXX Check GPOS logic */
-/* If SCREAM, then SvPVX(sv) should be compatible with strpos and strend.
+/* If SCREAM, then SvPVX_const(sv) should be compatible with strpos and strend.
Otherwise, only SvCUR(sv) is used to get strbeg. */
/* XXXX We assume that strpos is strbeg unless sv. */
char *check_at = Nullch; /* check substr found at this pos */
const I32 multiline = prog->reganch & PMf_MULTILINE;
#ifdef DEBUGGING
- char *i_strpos = strpos;
- SV *dsv = PERL_DEBUG_PAD_ZERO(0);
+ const char * const i_strpos = strpos;
+ SV * const dsv = PERL_DEBUG_PAD_ZERO(0);
#endif
GET_RE_DEBUG_FLAGS_DECL;
DEBUG_EXECUTE_r(PerlIO_printf(Perl_debug_log,
"UTF-8 target...\n"));
PerlIO_printf(Perl_debug_log,
- "%sGuessing start of match, REx%s `%s%.60s%s%s' against `%s%.*s%s%s'...\n",
+ "%sGuessing start of match, REx%s \"%s%.60s%s%s\" against \"%s%.*s%s%s\"...\n",
PL_colors[4], PL_colors[5], PL_colors[0],
prog->precomp,
PL_colors[1],
if (!ml_anch) {
if ( !(prog->reganch & (ROPT_ANCH_GPOS /* Checked by the caller */
| ROPT_IMPLICIT)) /* not a real BOL */
- /* SvCUR is not set on references: SvRV and SvPVX overlap */
+ /* SvCUR is not set on references: SvRV and SvPVX_const overlap */
&& sv && !SvROK(sv)
&& (strpos != strbeg)) {
DEBUG_EXECUTE_r(PerlIO_printf(Perl_debug_log, "Not at start...\n"));
}
/* Now should match s[0..slen-2] */
slen--;
- if (slen && (*SvPVX(check) != *s
+ if (slen && (*SvPVX_const(check) != *s
|| (slen > 1
- && memNE(SvPVX(check), s, slen)))) {
+ && memNE(SvPVX_const(check), s, slen)))) {
report_neq:
DEBUG_EXECUTE_r(PerlIO_printf(Perl_debug_log, "String not equal...\n"));
goto fail_finish;
}
}
- else if (*SvPVX(check) != *s
+ else if (*SvPVX_const(check) != *s
|| ((slen = SvCUR(check)) > 1
- && memNE(SvPVX(check), s, slen)))
+ && memNE(SvPVX_const(check), s, slen)))
goto report_neq;
goto success_at_start;
}
goto fail_finish;
/* we may be pointing at the wrong string */
if (s && RX_MATCH_COPIED(prog))
- s = strbeg + (s - SvPVX(sv));
+ s = strbeg + (s - SvPVX_const(sv));
if (data)
*data->scream_olds = s;
}
/* Update the count-of-usability, remove useless subpatterns,
unshift s. */
- DEBUG_EXECUTE_r(PerlIO_printf(Perl_debug_log, "%s %s substr `%s%.*s%s'%s%s",
+ DEBUG_EXECUTE_r(PerlIO_printf(Perl_debug_log, "%s %s substr \"%s%.*s%s\"%s%s",
(s ? "Found" : "Did not find"),
(check == (do_utf8 ? prog->anchored_utf8 : prog->anchored_substr) ? "anchored" : "floating"),
PL_colors[0],
(int)(SvCUR(check) - (SvTAIL(check)!=0)),
- SvPVX(check),
+ SvPVX_const(check),
PL_colors[1], (SvTAIL(check) ? "$" : ""),
(s ? " at offset " : "...\n") ) );
/* Got a candidate. Check MBOL anchoring, and the *other* substr.
Start with the other substr.
XXXX no SCREAM optimization yet - and a very coarse implementation
- XXXX /ttx+/ results in anchored=`ttx', floating=`x'. floating will
+ XXXX /ttx+/ results in anchored="ttx", floating="x". floating will
*always* match. Probably should be marked during compile...
Probably it is right to do no SCREAM here...
*/
if (check == (do_utf8 ? prog->float_utf8 : prog->float_substr)) {
do_other_anchored:
{
- char *last = HOP3c(s, -start_shift, strbeg), *last1, *last2;
+ char * const last = HOP3c(s, -start_shift, strbeg);
+ char *last1, *last2;
char *s1 = s;
SV* must;
multiline ? FBMrf_MULTILINE : 0
);
DEBUG_EXECUTE_r(PerlIO_printf(Perl_debug_log,
- "%s anchored substr `%s%.*s%s'%s",
+ "%s anchored substr \"%s%.*s%s\"%s",
(s ? "Found" : "Contradicts"),
PL_colors[0],
(int)(SvCUR(must)
- (SvTAIL(must)!=0)),
- SvPVX(must),
+ SvPVX_const(must),
PL_colors[1], (SvTAIL(must) ? "$" : "")));
if (!s) {
if (last1 >= last2) {
(unsigned char*)last + SvCUR(must)
- (SvTAIL(must)!=0),
must, multiline ? FBMrf_MULTILINE : 0);
- DEBUG_EXECUTE_r(PerlIO_printf(Perl_debug_log, "%s floating substr `%s%.*s%s'%s",
+ DEBUG_EXECUTE_r(PerlIO_printf(Perl_debug_log, "%s floating substr \"%s%.*s%s\"%s",
(s ? "Found" : "Contradicts"),
PL_colors[0],
(int)(SvCUR(must) - (SvTAIL(must)!=0)),
- SvPVX(must),
+ SvPVX_const(must),
PL_colors[1], (SvTAIL(must) ? "$" : "")));
if (!s) {
if (last1 == last) {
regstclass does not come from lookahead... */
/* If regstclass takes bytelength more than 1: If charlength==1, OK.
This leaves EXACTF only, which is dealt with in find_byclass(). */
- const U8* str = (U8*)STRING(prog->regstclass);
+ const U8* const str = (U8*)STRING(prog->regstclass);
const int cl_l = (PL_regkind[(U8)OP(prog->regstclass)] == EXACT
? CHR_DIST(str+STR_LEN(prog->regstclass), str)
: 1);
}
tmp = ((OP(c) == BOUND ?
isALNUM_uni(tmp) : isALNUM_LC_uvchr(UNI_TO_NATIVE(tmp))) != 0);
- LOAD_UTF8_CHARCLASS(alnum,"a");
+ LOAD_UTF8_CHARCLASS_ALNUM();
while (s + (uskip = UTF8SKIP(s)) <= strend) {
if (tmp == !(OP(c) == BOUND ?
swash_fetch(PL_utf8_alnum, (U8*)s, do_utf8) :
}
tmp = ((OP(c) == NBOUND ?
isALNUM_uni(tmp) : isALNUM_LC_uvchr(UNI_TO_NATIVE(tmp))) != 0);
- LOAD_UTF8_CHARCLASS(alnum,"a");
+ LOAD_UTF8_CHARCLASS_ALNUM();
while (s + (uskip = UTF8SKIP(s)) <= strend) {
if (tmp == !(OP(c) == NBOUND ?
swash_fetch(PL_utf8_alnum, (U8*)s, do_utf8) :
break;
case ALNUM:
if (do_utf8) {
- LOAD_UTF8_CHARCLASS(alnum,"a");
+ LOAD_UTF8_CHARCLASS_ALNUM();
while (s + (uskip = UTF8SKIP(s)) <= strend) {
if (swash_fetch(PL_utf8_alnum, (U8*)s, do_utf8)) {
if (tmp && (norun || regtry(prog, s)))
break;
case NALNUM:
if (do_utf8) {
- LOAD_UTF8_CHARCLASS(alnum,"a");
+ LOAD_UTF8_CHARCLASS_ALNUM();
while (s + (uskip = UTF8SKIP(s)) <= strend) {
if (!swash_fetch(PL_utf8_alnum, (U8*)s, do_utf8)) {
if (tmp && (norun || regtry(prog, s)))
break;
case SPACE:
if (do_utf8) {
- LOAD_UTF8_CHARCLASS(space," ");
+ LOAD_UTF8_CHARCLASS_SPACE();
while (s + (uskip = UTF8SKIP(s)) <= strend) {
if (*s == ' ' || swash_fetch(PL_utf8_space,(U8*)s, do_utf8)) {
if (tmp && (norun || regtry(prog, s)))
break;
case NSPACE:
if (do_utf8) {
- LOAD_UTF8_CHARCLASS(space," ");
+ LOAD_UTF8_CHARCLASS_SPACE();
while (s + (uskip = UTF8SKIP(s)) <= strend) {
if (!(*s == ' ' || swash_fetch(PL_utf8_space,(U8*)s, do_utf8))) {
if (tmp && (norun || regtry(prog, s)))
break;
case DIGIT:
if (do_utf8) {
- LOAD_UTF8_CHARCLASS(digit,"0");
+ LOAD_UTF8_CHARCLASS_DIGIT();
while (s + (uskip = UTF8SKIP(s)) <= strend) {
if (swash_fetch(PL_utf8_digit,(U8*)s, do_utf8)) {
if (tmp && (norun || regtry(prog, s)))
break;
case NDIGIT:
if (do_utf8) {
- LOAD_UTF8_CHARCLASS(digit,"0");
+ LOAD_UTF8_CHARCLASS_DIGIT();
while (s + (uskip = UTF8SKIP(s)) <= strend) {
if (!swash_fetch(PL_utf8_digit,(U8*)s, do_utf8)) {
if (tmp && (norun || regtry(prog, s)))
GET_RE_DEBUG_FLAGS_DECL;
- (void)data; /* Currently unused */
+ PERL_UNUSED_ARG(data);
RX_MATCH_UTF8_set(prog,do_utf8);
PL_regcc = 0;
if (!PL_colorset)
reginitcolors();
PerlIO_printf(Perl_debug_log,
- "%sMatching REx%s `%s%*.*s%s%s' against `%s%.*s%s%s'\n",
+ "%sMatching REx%s \"%s%*.*s%s%s\" against \"%s%.*s%s%s\"\n",
PL_colors[4], PL_colors[5], PL_colors[0],
len0, len0, s0,
PL_colors[1],
#endif
if (!(do_utf8 ? prog->anchored_utf8 : prog->anchored_substr))
do_utf8 ? to_utf8_substr(prog) : to_byte_substr(prog);
- ch = SvPVX(do_utf8 ? prog->anchored_utf8 : prog->anchored_substr)[0];
+ ch = SvPVX_const(do_utf8 ? prog->anchored_utf8 : prog->anchored_substr)[0];
if (do_utf8) {
while (s < strend) {
"Did not find anchored character...\n")
);
}
- /*SUPPRESS 560*/
else if (prog->anchored_substr != Nullsv
|| prog->anchored_utf8 != Nullsv
|| ((prog->float_substr != Nullsv || prog->float_utf8 != Nullsv)
else
last1 = s - 1; /* bogus */
- /* XXXX check_substr already used to find `s', can optimize if
+ /* XXXX check_substr already used to find "s", can optimize if
check_substr==must. */
scream_pos = -1;
dontbother = end_shift;
multiline ? FBMrf_MULTILINE : 0))) ) {
/* we may be pointing at the wrong string */
if ((flags & REXEC_SCREAM) && RX_MATCH_COPIED(prog))
- s = strbeg + (s - SvPVX(sv));
+ s = strbeg + (s - SvPVX_const(sv));
DEBUG_EXECUTE_r( did_match = 1 );
if (HOPc(s, -back_max) > last1) {
last1 = HOPc(s, -back_min);
}
DEBUG_EXECUTE_r(if (!did_match)
PerlIO_printf(Perl_debug_log,
- "Did not find %s substr `%s%.*s%s'%s...\n",
+ "Did not find %s substr \"%s%.*s%s\"%s...\n",
((must == prog->anchored_substr || must == prog->anchored_utf8)
? "anchored" : "floating"),
PL_colors[0],
(int)(SvCUR(must) - (SvTAIL(must)!=0)),
- SvPVX(must),
+ SvPVX_const(must),
PL_colors[1], (SvTAIL(must) ? "$" : ""))
);
goto phooey;
}
DEBUG_EXECUTE_r({
SV *prop = sv_newmortal();
- char *s0;
- char *s1;
+ const char *s0;
+ const char *s1;
int len0;
int len1;
regprop(prop, c);
s0 = UTF ?
- pv_uni_display(dsv0, (U8*)SvPVX(prop), SvCUR(prop), 60,
+ pv_uni_display(dsv0, (U8*)SvPVX_const(prop), SvCUR(prop), 60,
UNI_DISPLAY_REGEX) :
- SvPVX(prop);
+ SvPVX_const(prop);
len0 = UTF ? SvCUR(dsv0) : SvCUR(prop);
s1 = UTF ?
sv_uni_display(dsv1, sv, 60, UNI_DISPLAY_REGEX) : s;
len1 = UTF ? SvCUR(dsv1) : strend - s;
PerlIO_printf(Perl_debug_log,
- "Matching stclass `%*.*s' against `%*.*s'\n",
+ "Matching stclass \"%*.*s\" against \"%*.*s\"\n",
len0, len0, s0,
len1, len1, s1);
});
last = scream_olds; /* Only one occurrence. */
/* we may be pointing at the wrong string */
else if (RX_MATCH_COPIED(prog))
- s = strbeg + (s - SvPVX(sv));
+ s = strbeg + (s - SvPVX_const(sv));
}
else {
STRLEN len;
- const char * const little = SvPV(float_real, len);
+ const char * const little = SvPV_const(float_real, len);
if (SvTAIL(float_real)) {
if (memEQ(strend - len + 1, little, len - 1))
if (len)
last = rninstr(s, strend, little, little + len);
else
- last = strend; /* matching `$' */
+ last = strend; /* matching "$" */
}
}
if (last == NULL) {
RX_MATCH_COPY_FREE(prog);
if (flags & REXEC_COPY_STR) {
I32 i = PL_regeol - startpos + (stringarg - strbeg);
-#ifdef PERL_COPY_ON_WRITE
+#ifdef PERL_OLD_COPY_ON_WRITE
if ((SvIsCOW(sv)
|| (SvFLAGS(sv) & CAN_COW_MASK) == CAN_COW_FLAGS)) {
if (DEBUG_C_TEST) {
(int) SvTYPE(sv));
}
prog->saved_copy = sv_setsv_cow(prog->saved_copy, sv);
- prog->subbeg = SvPVX(prog->saved_copy);
+ prog->subbeg = (char *)SvPVX_const(prog->saved_copy);
assert (SvPOKp(prog->saved_copy));
} else
#endif
SAVEDESTRUCTOR_X(restore_pos, 0);
}
if (!PL_reg_curpm) {
- Newz(22, PL_reg_curpm, 1, PMOP);
+ Newxz(PL_reg_curpm, 1, PMOP);
#ifdef USE_ITHREADS
{
SV* repointer = newSViv(0);
$` inside (?{}) could fail... */
PL_reg_oldsaved = prog->subbeg;
PL_reg_oldsavedlen = prog->sublen;
-#ifdef PERL_COPY_ON_WRITE
+#ifdef PERL_OLD_COPY_ON_WRITE
PL_nrs = prog->saved_copy;
#endif
RX_MATCH_COPIED_off(prog);
if(PL_reg_start_tmp)
Renew(PL_reg_start_tmp, PL_reg_start_tmpl, char*);
else
- New(22, PL_reg_start_tmp, PL_reg_start_tmpl, char*);
+ Newx(PL_reg_start_tmp, PL_reg_start_tmpl, char*);
}
/* XXXX What this code is doing here?!!! There should be no need
15 - l - pref_len + 1,
"",
(IV)(scan - PL_regprogram), PL_regindent*2, "",
- SvPVX(prop));
+ SvPVX_const(prop));
}
});
if ( base ) {
- if ( do_utf8 || UTF ) {
+ if ( do_utf8 ) {
if ( foldlen>0 ) {
uvc = utf8n_to_uvuni( uscan, UTF8_MAXLEN, &len, uniflags );
foldlen -= len;
if ( base ) {
- if ( do_utf8 || UTF ) {
+ if ( do_utf8 ) {
uvc = utf8n_to_uvuni( (U8*)uc, UTF8_MAXLEN, &len, uniflags );
} else {
uvc = (U32)*uc;
"%*s %sonly one match : #%d <%s>%s\n",
REPORT_CODE_OFF+PL_regindent*2, "", PL_colors[4],
accept_buff[ 0 ].wordnum,
- tmp ? SvPV_nolen( *tmp ) : "not compiled under -Dr",
+ tmp ? SvPV_nolen_const( *tmp ) : "not compiled under -Dr",
PL_colors[5] );
});
PL_reginput = (char *)accept_buff[ 0 ].endpos;
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,
- tmp ? SvPV_nolen( *tmp ) : "not compiled under -Dr",scan,
+ tmp ? SvPV_nolen_const( *tmp ) : "not compiled under -Dr",scan,
PL_colors[5] );
});
if ( best<accepted ) {
if (!nextchr)
sayNO;
if (do_utf8) {
- LOAD_UTF8_CHARCLASS(alnum,"a");
+ LOAD_UTF8_CHARCLASS_ALNUM();
if (!(OP(scan) == ALNUM
? swash_fetch(PL_utf8_alnum, (U8*)locinput, do_utf8)
: isALNUM_LC_utf8((U8*)locinput)))
if (!nextchr && locinput >= PL_regeol)
sayNO;
if (do_utf8) {
- LOAD_UTF8_CHARCLASS(alnum,"a");
+ LOAD_UTF8_CHARCLASS_ALNUM();
if (OP(scan) == NALNUM
? swash_fetch(PL_utf8_alnum, (U8*)locinput, do_utf8)
: isALNUM_LC_utf8((U8*)locinput))
}
if (OP(scan) == BOUND || OP(scan) == NBOUND) {
ln = isALNUM_uni(ln);
- LOAD_UTF8_CHARCLASS(alnum,"a");
+ LOAD_UTF8_CHARCLASS_ALNUM();
n = swash_fetch(PL_utf8_alnum, (U8*)locinput, do_utf8);
}
else {
sayNO;
if (do_utf8) {
if (UTF8_IS_CONTINUED(nextchr)) {
- LOAD_UTF8_CHARCLASS(space," ");
+ LOAD_UTF8_CHARCLASS_SPACE();
if (!(OP(scan) == SPACE
? swash_fetch(PL_utf8_space, (U8*)locinput, do_utf8)
: isSPACE_LC_utf8((U8*)locinput)))
if (!nextchr && locinput >= PL_regeol)
sayNO;
if (do_utf8) {
- LOAD_UTF8_CHARCLASS(space," ");
+ LOAD_UTF8_CHARCLASS_SPACE();
if (OP(scan) == NSPACE
? swash_fetch(PL_utf8_space, (U8*)locinput, do_utf8)
: isSPACE_LC_utf8((U8*)locinput))
if (!nextchr)
sayNO;
if (do_utf8) {
- LOAD_UTF8_CHARCLASS(digit,"0");
+ LOAD_UTF8_CHARCLASS_DIGIT();
if (!(OP(scan) == DIGIT
? swash_fetch(PL_utf8_digit, (U8*)locinput, do_utf8)
: isDIGIT_LC_utf8((U8*)locinput)))
if (!nextchr && locinput >= PL_regeol)
sayNO;
if (do_utf8) {
- LOAD_UTF8_CHARCLASS(digit,"0");
+ LOAD_UTF8_CHARCLASS_DIGIT();
if (OP(scan) == NDIGIT
? swash_fetch(PL_utf8_digit, (U8*)locinput, do_utf8)
: isDIGIT_LC_utf8((U8*)locinput))
if (locinput >= PL_regeol)
sayNO;
if (do_utf8) {
- LOAD_UTF8_CHARCLASS(mark,"~");
+ LOAD_UTF8_CHARCLASS_MARK();
if (swash_fetch(PL_utf8_mark,(U8*)locinput, do_utf8))
sayNO;
locinput += PL_utf8skip[nextchr];
}
else {
STRLEN len;
- char *t = SvPV(ret, len);
+ const char *t = SvPV_const(ret, len);
PMOP pm;
char * const oprecomp = PL_regprecomp;
const I32 osize = PL_regsize;
Zero(&pm, 1, PMOP);
if (DO_UTF8(ret)) pm.op_pmdynflags |= PMdf_DYN_UTF8;
- re = CALLREGCOMP(aTHX_ t, t + len, &pm);
+ re = CALLREGCOMP(aTHX_ (char*)t, (char*)t + len, &pm);
if (!(SvFLAGS(ret)
& (SVs_TEMP | SVs_PADTMP | SVf_READONLY
| SVs_GMG)))
}
DEBUG_EXECUTE_r(
PerlIO_printf(Perl_debug_log,
- "Entering embedded `%s%.60s%s%s'\n",
+ "Entering embedded \"%s%.60s%s%s\"\n",
PL_colors[0],
re->precomp,
PL_colors[1],
}
else {
PL_reg_poscache_size = size;
- Newz(29, PL_reg_poscache, size, char);
+ Newxz(PL_reg_poscache, size, char);
}
DEBUG_EXECUTE_r(
PerlIO_printf(Perl_debug_log,
goto do_no;
}
/* Have more choice yet. Reuse the same uwb. */
- /*SUPPRESS 560*/
if ((n = (uwb->type == RE_UNWIND_BRANCH
? NEXT_OFF(next) : ARG(next))))
next += n;
case ALNUM:
if (do_utf8) {
loceol = PL_regeol;
- LOAD_UTF8_CHARCLASS(alnum,"a");
+ LOAD_UTF8_CHARCLASS_ALNUM();
while (hardcount < max && scan < loceol &&
swash_fetch(PL_utf8_alnum, (U8*)scan, do_utf8)) {
scan += UTF8SKIP(scan);
case NALNUM:
if (do_utf8) {
loceol = PL_regeol;
- LOAD_UTF8_CHARCLASS(alnum,"a");
+ LOAD_UTF8_CHARCLASS_ALNUM();
while (hardcount < max && scan < loceol &&
!swash_fetch(PL_utf8_alnum, (U8*)scan, do_utf8)) {
scan += UTF8SKIP(scan);
case SPACE:
if (do_utf8) {
loceol = PL_regeol;
- LOAD_UTF8_CHARCLASS(space," ");
+ LOAD_UTF8_CHARCLASS_SPACE();
while (hardcount < max && scan < loceol &&
(*scan == ' ' ||
swash_fetch(PL_utf8_space,(U8*)scan, do_utf8))) {
case NSPACE:
if (do_utf8) {
loceol = PL_regeol;
- LOAD_UTF8_CHARCLASS(space," ");
+ LOAD_UTF8_CHARCLASS_SPACE();
while (hardcount < max && scan < loceol &&
!(*scan == ' ' ||
swash_fetch(PL_utf8_space,(U8*)scan, do_utf8))) {
case DIGIT:
if (do_utf8) {
loceol = PL_regeol;
- LOAD_UTF8_CHARCLASS(digit,"0");
+ LOAD_UTF8_CHARCLASS_DIGIT();
while (hardcount < max && scan < loceol &&
swash_fetch(PL_utf8_digit, (U8*)scan, do_utf8)) {
scan += UTF8SKIP(scan);
case NDIGIT:
if (do_utf8) {
loceol = PL_regeol;
- LOAD_UTF8_CHARCLASS(digit,"0");
+ LOAD_UTF8_CHARCLASS_DIGIT();
while (hardcount < max && scan < loceol &&
!swash_fetch(PL_utf8_digit, (U8*)scan, do_utf8)) {
scan += UTF8SKIP(scan);
regprop(prop, p);
PerlIO_printf(Perl_debug_log,
"%*s %s can match %"IVdf" times out of %"IVdf"...\n",
- REPORT_CODE_OFF+1, "", SvPVX(prop),(IV)c,(IV)max);
+ REPORT_CODE_OFF+1, "", SvPVX_const(prop),(IV)c,(IV)max);
});
});
const U32 n = ARG(node);
if (PL_regdata->what[n] == 's') {
- SV *rv = (SV*)PL_regdata->data[n];
- AV *av = (AV*)SvRV((SV*)rv);
+ SV * const rv = (SV*)PL_regdata->data[n];
+ AV * const av = (AV*)SvRV((SV*)rv);
SV **ary = AvARRAY(av);
SV **a, **b;
match = TRUE;
if (!match) {
AV *av;
- SV *sw = regclass_swash(n, TRUE, 0, (SV**)&av);
+ SV * const sw = regclass_swash(n, TRUE, 0, (SV**)&av);
if (sw) {
if (swash_fetch(sw, p, do_utf8))
else if (flags & ANYOF_FOLD) {
if (!match && lenp && av) {
I32 i;
-
for (i = 0; i <= av_len(av); i++) {
- SV* sv = *av_fetch(av, i, FALSE);
+ SV* const sv = *av_fetch(av, i, FALSE);
STRLEN len;
- const char *s = SvPV(sv, len);
+ const char * const s = SvPV_const(sv, len);
if (len <= plen && memEQ(s, (char*)p, len)) {
*lenp = len;
static void
restore_pos(pTHX_ void *arg)
{
- (void)arg; /* unused */
+ PERL_UNUSED_ARG(arg);
if (PL_reg_eval_set) {
if (PL_reg_oldsaved) {
PL_reg_re->subbeg = PL_reg_oldsaved;
PL_reg_re->sublen = PL_reg_oldsavedlen;
-#ifdef PERL_COPY_ON_WRITE
+#ifdef PERL_OLD_COPY_ON_WRITE
PL_reg_re->saved_copy = PL_nrs;
#endif
RX_MATCH_COPIED_on(PL_reg_re);
STATIC void
S_to_utf8_substr(pTHX_ register regexp *prog)
{
- SV* sv;
if (prog->float_substr && !prog->float_utf8) {
+ SV* sv;
prog->float_utf8 = sv = newSVsv(prog->float_substr);
sv_utf8_upgrade(sv);
if (SvTAIL(prog->float_substr))
prog->check_utf8 = sv;
}
if (prog->anchored_substr && !prog->anchored_utf8) {
+ SV* sv;
prog->anchored_utf8 = sv = newSVsv(prog->anchored_substr);
sv_utf8_upgrade(sv);
if (SvTAIL(prog->anchored_substr))
STATIC void
S_to_byte_substr(pTHX_ register regexp *prog)
{
- SV* sv;
if (prog->float_utf8 && !prog->float_substr) {
+ SV* sv;
prog->float_substr = sv = newSVsv(prog->float_utf8);
if (sv_utf8_downgrade(sv, TRUE)) {
if (SvTAIL(prog->float_utf8))
prog->check_substr = sv;
}
if (prog->anchored_utf8 && !prog->anchored_substr) {
+ SV* sv;
prog->anchored_substr = sv = newSVsv(prog->anchored_utf8);
if (sv_utf8_downgrade(sv, TRUE)) {
if (SvTAIL(prog->anchored_utf8))