while (s <= e) {
if ( utf8_to_uvchr((U8*)s, &len) == c1
&& (ln == 1 ||
- ibcmp_utf8(s, do_utf8, m, UTF, ln)) )
+ ibcmp_utf8(s, do_utf8, strend - s,
+ m, UTF, ln)) )
goto got_it;
s += len;
}
UV c = utf8_to_uvchr((U8*)s, &len);
if ( (c == c1 || c == c2)
&& (ln == 1 ||
- ibcmp_utf8(s, do_utf8, m, UTF, ln)) )
+ ibcmp_utf8(s, do_utf8, strend - s,
+ m, UTF, ln)) )
goto got_it;
s += len;
}
c1 = *(PL_bostr + ln);
}
else { c1 = (U8)*STRING(text_node); }
- if (OP(next) == EXACTF)
+ if (OP(text_node) == EXACTF || OP(text_node) == REFF)
c2 = PL_fold[c1];
- else if (OP(text_node) == EXACTFL)
+ else if (OP(text_node) == EXACTFL || OP(text_node) == REFFL)
c2 = PL_fold_locale[c1];
else
c2 = c1;
}
else { c1 = (U8)*STRING(text_node); }
- if (OP(text_node) == EXACTF)
+ if (OP(text_node) == EXACTF || OP(text_node) == REFF)
c2 = PL_fold[c1];
- else if (OP(text_node) == EXACTFL)
+ else if (OP(text_node) == EXACTFL || OP(text_node) == REFFL)
c2 = PL_fold_locale[c1];
else
c2 = c1;
if (!UTF) {
c2 = c1 = *s;
- if (OP(text_node) == EXACTF)
+ if (OP(text_node) == EXACTF || OP(text_node) == REFF)
c2 = PL_fold[c1];
- else if (OP(text_node) == EXACTFL)
+ else if (OP(text_node) == EXACTFL || OP(text_node) == REFFL)
c2 = PL_fold_locale[c1];
}
else { /* UTF */
- if (OP(text_node) == EXACTF) {
+ if (OP(text_node) == EXACTF || OP(text_node) == REFF) {
STRLEN ulen1, ulen2;
U8 tmpbuf1[UTF8_MAXLEN*2+1];
U8 tmpbuf2[UTF8_MAXLEN*2+1];