| 3204 |
|
|
| 3205 |
/* Backslash may introduce a single character, or it may introduce one |
/* Backslash may introduce a single character, or it may introduce one |
| 3206 |
of the specials, which just set a flag. The sequence \b is a special |
of the specials, which just set a flag. The sequence \b is a special |
| 3207 |
case. Inside a class (and only there) it is treated as backspace. |
case. Inside a class (and only there) it is treated as backspace. We |
| 3208 |
Elsewhere it marks a word boundary. Other escapes have preset maps ready |
assume that other escapes have more than one character in them, so set |
| 3209 |
to 'or' into the one we are building. We assume they have more than one |
class_charcount bigger than one. Unrecognized escapes fall through and |
| 3210 |
character in them, so set class_charcount bigger than one. */ |
are either treated as literal characters (by default), or are faulted if |
| 3211 |
|
PCRE_EXTRA is set. */ |
| 3212 |
|
|
| 3213 |
if (c == CHAR_BACKSLASH) |
if (c == CHAR_BACKSLASH) |
| 3214 |
{ |
{ |
| 3215 |
c = check_escape(&ptr, errorcodeptr, cd->bracount, options, TRUE); |
c = check_escape(&ptr, errorcodeptr, cd->bracount, options, TRUE); |
| 3216 |
if (*errorcodeptr != 0) goto FAILED; |
if (*errorcodeptr != 0) goto FAILED; |
| 3217 |
|
|
| 3218 |
if (-c == ESC_b) c = CHAR_BS; /* \b is backspace in a class */ |
if (-c == ESC_b) c = CHAR_BS; /* \b is backspace in a class */ |
|
else if (-c == ESC_X) c = CHAR_X; /* \X is literal X in a class */ |
|
|
else if (-c == ESC_R) c = CHAR_R; /* \R is literal R in a class */ |
|
| 3219 |
else if (-c == ESC_Q) /* Handle start of quoted string */ |
else if (-c == ESC_Q) /* Handle start of quoted string */ |
| 3220 |
{ |
{ |
| 3221 |
if (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E) |
if (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E) |