#ifdef DEBUGGING /* 7/99: reports of failure (with the older version) */
if (end_shift < 0)
- croak("panic: end_shift");
+ Perl_croak(aTHX_ "panic: end_shift");
#endif
check = prog->check_substr;
/* We know what class it must start with. */
switch (OP(c)) {
case ANYOFUTF8:
- cc = (char *) OPERAND(c);
+ cc = MASK(c);
while (s < strend) {
if (REGINCLASSUTF8(c, (U8*)s)) {
if (tmp && regtry(prog, s))
}
break;
case ANYOF:
- cc = (char *) OPERAND(c);
+ cc = MASK(c);
while (s < strend) {
if (REGINCLASS(cc, *s)) {
if (tmp && regtry(prog, s))
nextchr = UCHARAT(++locinput);
break;
case EXACT:
- s = (char *) OPERAND(scan);
- ln = UCHARAT(s++);
+ s = STRING(scan);
+ ln = STR_LEN(scan);
/* Inline the first character, for speed. */
if (UCHARAT(s) != nextchr)
sayNO;
PL_reg_flags |= RF_tainted;
/* FALL THROUGH */
case EXACTF:
- s = (char *) OPERAND(scan);
- ln = UCHARAT(s++);
+ s = STRING(scan);
+ ln = STR_LEN(scan);
if (UTF) {
char *l = locinput;
nextchr = UCHARAT(locinput);
break;
case ANYOFUTF8:
- s = (char *) OPERAND(scan);
+ s = MASK(scan);
if (!REGINCLASSUTF8(scan, (U8*)locinput))
sayNO;
if (locinput >= PL_regeol)
nextchr = UCHARAT(locinput);
break;
case ANYOF:
- s = (char *) OPERAND(scan);
+ s = MASK(scan);
if (nextchr < 0)
nextchr = UCHARAT(locinput);
if (!REGINCLASS(s, nextchr))
ln = n;
locinput = PL_reginput;
if (PL_regkind[(U8)OP(next)] == EXACT) {
- c1 = UCHARAT(OPERAND(next) + 1);
+ c1 = (U8)*STRING(next);
if (OP(next) == EXACTF)
c2 = PL_fold[c1];
else if (OP(next) == EXACTFL)
);
if (n >= ln) {
if (PL_regkind[(U8)OP(next)] == EXACT) {
- c1 = UCHARAT(OPERAND(next) + 1);
+ c1 = (U8)*STRING(next);
if (OP(next) == EXACTF)
c2 = PL_fold[c1];
else if (OP(next) == EXACTFL)
* when we know what character comes next.
*/
if (PL_regkind[(U8)OP(next)] == EXACT) {
- c1 = UCHARAT(OPERAND(next) + 1);
+ c1 = (U8)*STRING(next);
if (OP(next) == EXACTF)
c2 = PL_fold[c1];
else if (OP(next) == EXACTFL)
scan = PL_reginput;
if (max != REG_INFTY && max < loceol - scan)
loceol = scan + max;
- opnd = (char *) OPERAND(p);
switch (OP(p)) {
case REG_ANY:
while (scan < loceol && *scan != '\n')
}
break;
case EXACT: /* length of string is 1 */
- c = UCHARAT(++opnd);
+ c = (U8)*STRING(p);
while (scan < loceol && UCHARAT(scan) == c)
scan++;
break;
case EXACTF: /* length of string is 1 */
- c = UCHARAT(++opnd);
+ c = (U8)*STRING(p);
while (scan < loceol &&
(UCHARAT(scan) == c || UCHARAT(scan) == PL_fold[c]))
scan++;
break;
case EXACTFL: /* length of string is 1 */
PL_reg_flags |= RF_tainted;
- c = UCHARAT(++opnd);
+ c = (U8)*STRING(p);
while (scan < loceol &&
(UCHARAT(scan) == c || UCHARAT(scan) == PL_fold_locale[c]))
scan++;
}
break;
case ANYOF:
+ opnd = MASK(p);
while (scan < loceol && REGINCLASS(opnd, *scan))
scan++;
break;