| 1655 |
case OP_ASSERTBACK: |
case OP_ASSERTBACK: |
| 1656 |
case OP_ASSERTBACK_NOT: |
case OP_ASSERTBACK_NOT: |
| 1657 |
do cc += GET(cc, 1); while (*cc == OP_ALT); |
do cc += GET(cc, 1); while (*cc == OP_ALT); |
| 1658 |
/* Fall through */ |
cc += _pcre_OP_lengths[*cc]; |
| 1659 |
|
break; |
| 1660 |
|
|
| 1661 |
/* Skip over things that don't match chars */ |
/* Skip over things that don't match chars */ |
| 1662 |
|
|
| 6451 |
|
|
| 6452 |
if (ptr[1] != CHAR_PLUS && ptr[1] != CHAR_MINUS) |
if (ptr[1] != CHAR_PLUS && ptr[1] != CHAR_MINUS) |
| 6453 |
{ |
{ |
| 6454 |
BOOL isnumber = TRUE; |
BOOL is_a_number = TRUE; |
| 6455 |
for (p = ptr + 1; *p != 0 && *p != terminator; p++) |
for (p = ptr + 1; *p != 0 && *p != terminator; p++) |
| 6456 |
{ |
{ |
| 6457 |
if ((cd->ctypes[*p] & ctype_digit) == 0) isnumber = FALSE; |
if ((cd->ctypes[*p] & ctype_digit) == 0) is_a_number = FALSE; |
| 6458 |
if ((cd->ctypes[*p] & ctype_word) == 0) break; |
if ((cd->ctypes[*p] & ctype_word) == 0) break; |
| 6459 |
} |
} |
| 6460 |
if (*p != terminator) |
if (*p != terminator) |
| 6462 |
*errorcodeptr = ERR57; |
*errorcodeptr = ERR57; |
| 6463 |
break; |
break; |
| 6464 |
} |
} |
| 6465 |
if (isnumber) |
if (is_a_number) |
| 6466 |
{ |
{ |
| 6467 |
ptr++; |
ptr++; |
| 6468 |
goto HANDLE_NUMERICAL_RECURSION; |
goto HANDLE_NUMERICAL_RECURSION; |