Branch Coverage

deps/libgit2/deps/pcre/pcre_compile.c
Criterion Covered Total %
branch 305 2210 13.8


line true false branch
898 0 0 for (; n > 0; n--)
900 0 0 while (*s++ != CHAR_NULL) {};
901 0 0 if (*s == CHAR_NULL) return "Error text not found (please report)";
927 0 0 if (newsize > COMPILE_WORK_SIZE_MAX) newsize = COMPILE_WORK_SIZE_MAX;
928 0 0 if (cd->workspace_size >= COMPILE_WORK_SIZE_MAX ||
0 0 if (cd->workspace_size >= COMPILE_WORK_SIZE_MAX ||
933 0 0 if (newspace == NULL) return ERR21;
936 0 0 if (cd->workspace_size > COMPILE_WORK_SIZE)
963 0 0 if (!IS_DIGIT(*p)) return FALSE;
0 0 if (!IS_DIGIT(*p)) return FALSE;
965 0 0 while (IS_DIGIT(*p)) p++;
0 0 while (IS_DIGIT(*p)) p++;
966 0 0 if (*p == CHAR_RIGHT_CURLY_BRACKET) return TRUE;
968 0 0 if (*p++ != CHAR_COMMA) return FALSE;
969 0 0 if (*p == CHAR_RIGHT_CURLY_BRACKET) return TRUE;
971 0 0 if (!IS_DIGIT(*p)) return FALSE;
0 0 if (!IS_DIGIT(*p)) return FALSE;
973 0 0 while (IS_DIGIT(*p)) p++;
0 0 while (IS_DIGIT(*p)) p++;
1021 0 104 if (c == CHAR_NULL) *errorcodeptr = ERR1;
1029 0 104 else if (c < CHAR_0 || c > CHAR_z) {}
0 0 else if (c < CHAR_0 || c > CHAR_z) {}
1030 0 0 else if ((i = escapes[c - CHAR_0]) != 0)
1031 0 0 { if (i > 0) c = (pcre_uint32)i; else escape = -i; }
1058 0 0 if ((options & PCRE_JAVASCRIPT_COMPAT) != 0)
1062 0 0 if (MAX_255(ptr[1]) && (digitab[ptr[1]] & ctype_xdigit) != 0
1064 0 0 && MAX_255(ptr[3]) && (digitab[ptr[3]] & ctype_xdigit) != 0
1065 0 0 && MAX_255(ptr[4]) && (digitab[ptr[4]] & ctype_xdigit) != 0)
0 0 && MAX_255(ptr[4]) && (digitab[ptr[4]] & ctype_xdigit) != 0)
1068 0 0 for (i = 0; i < 4; ++i)
1072 0 0 if (cc >= CHAR_a) cc -= 32; /* Convert to upper case */
1073 0 0 c = (c << 4) + cc - ((cc < CHAR_A)? CHAR_0 : (CHAR_A - 10));
1081 0 0 if (c > (utf ? 0x10ffffU : 0xffU))
0 0 if (c > (utf ? 0x10ffffU : 0xffU))
1090 0 0 else if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73;
0 0 else if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73;
0 0 else if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73;
1099 0 0 if ((options & PCRE_JAVASCRIPT_COMPAT) == 0) *errorcodeptr = ERR37;
1120 0 0 if (isclass) break;
1121 0 0 if (ptr[1] == CHAR_LESS_THAN_SIGN || ptr[1] == CHAR_APOSTROPHE)
0 0 if (ptr[1] == CHAR_LESS_THAN_SIGN || ptr[1] == CHAR_APOSTROPHE)
1129 0 0 if (ptr[1] == CHAR_LEFT_CURLY_BRACKET)
1132 0 0 for (p = ptr+2; *p != CHAR_NULL && *p != CHAR_RIGHT_CURLY_BRACKET; p++)
0 0 for (p = ptr+2; *p != CHAR_NULL && *p != CHAR_RIGHT_CURLY_BRACKET; p++)
1133 0 0 if (*p != CHAR_MINUS && !IS_DIGIT(*p)) break;
0 0 if (*p != CHAR_MINUS && !IS_DIGIT(*p)) break;
0 0 if (*p != CHAR_MINUS && !IS_DIGIT(*p)) break;
1134 0 0 if (*p != CHAR_NULL && *p != CHAR_RIGHT_CURLY_BRACKET)
0 0 if (*p != CHAR_NULL && *p != CHAR_RIGHT_CURLY_BRACKET)
1144 0 0 if (ptr[1] == CHAR_MINUS)
1154 0 0 while (IS_DIGIT(ptr[1]))
0 0 while (IS_DIGIT(ptr[1]))
1156 0 0 if (s > INT_MAX / 10 - 1) /* Integer overflow */
1163 0 0 if (overflow) /* Integer overflow */
1165 0 0 while (IS_DIGIT(ptr[1]))
0 0 while (IS_DIGIT(ptr[1]))
1171 0 0 if (braced && *(++ptr) != CHAR_RIGHT_CURLY_BRACKET)
0 0 if (braced && *(++ptr) != CHAR_RIGHT_CURLY_BRACKET)
1177 0 0 if (s == 0)
1183 0 0 if (negated)
1185 0 0 if (s > bracount)
1215 0 0 if (!isclass)
1221 0 0 while (IS_DIGIT(ptr[1]))
0 0 while (IS_DIGIT(ptr[1]))
1223 0 0 if (s > INT_MAX / 10 - 1) /* Integer overflow */
1230 0 0 if (overflow) /* Integer overflow */
1232 0 0 while (IS_DIGIT(ptr[1]))
0 0 while (IS_DIGIT(ptr[1]))
1237 0 0 if (s < 8 || s <= bracount) /* Check for back reference */
0 0 if (s < 8 || s <= bracount) /* Check for back reference */
1250 0 0 if ((c = *ptr) >= CHAR_8) break;
1262 0 0 while(i++ < 2 && ptr[1] >= CHAR_0 && ptr[1] <= CHAR_7)
0 0 while(i++ < 2 && ptr[1] >= CHAR_0 && ptr[1] <= CHAR_7)
0 0 while(i++ < 2 && ptr[1] >= CHAR_0 && ptr[1] <= CHAR_7)
1265 0 0 if (!utf && c > 0xff) *errorcodeptr = ERR51;
0 0 if (!utf && c > 0xff) *errorcodeptr = ERR51;
1273 0 0 if (ptr[1] != CHAR_LEFT_CURLY_BRACKET) *errorcodeptr = ERR81; else
1274 0 0 if (ptr[2] == CHAR_RIGHT_CURLY_BRACKET) *errorcodeptr = ERR86; else
1279 0 0 while (*ptr >= CHAR_0 && *ptr <= CHAR_7)
0 0 while (*ptr >= CHAR_0 && *ptr <= CHAR_7)
1282 0 0 if (c == 0 && cc == CHAR_0) continue; /* Leading zeroes */
0 0 if (c == 0 && cc == CHAR_0) continue; /* Leading zeroes */
1288 0 0 if (c > (utf ? 0x10ffffU : 0xffU)) { overflow = TRUE; break; }
0 0 if (c > (utf ? 0x10ffffU : 0xffU)) { overflow = TRUE; break; }
1295 0 0 if (overflow)
1297 0 0 while (*ptr >= CHAR_0 && *ptr <= CHAR_7) ptr++;
0 0 while (*ptr >= CHAR_0 && *ptr <= CHAR_7) ptr++;
1300 0 0 else if (*ptr == CHAR_RIGHT_CURLY_BRACKET)
1302 0 0 if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73;
0 0 if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73;
0 0 if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73;
1312 0 0 if ((options & PCRE_JAVASCRIPT_COMPAT) != 0)
1314 0 0 if (MAX_255(ptr[1]) && (digitab[ptr[1]] & ctype_xdigit) != 0
1315 0 0 && MAX_255(ptr[2]) && (digitab[ptr[2]] & ctype_xdigit) != 0)
1318 0 0 for (i = 0; i < 2; ++i)
1322 0 0 if (cc >= CHAR_a) cc -= 32; /* Convert to upper case */
1323 0 0 c = (c << 4) + cc - ((cc < CHAR_A)? CHAR_0 : (CHAR_A - 10));
1341 0 0 if (ptr[1] == CHAR_LEFT_CURLY_BRACKET)
1344 0 0 if (*ptr == CHAR_RIGHT_CURLY_BRACKET)
1351 0 0 while (MAX_255(*ptr) && (digitab[*ptr] & ctype_xdigit) != 0)
1354 0 0 if (c == 0 && cc == CHAR_0) continue; /* Leading zeroes */
0 0 if (c == 0 && cc == CHAR_0) continue; /* Leading zeroes */
1361 0 0 if (cc >= CHAR_a) cc -= 32; /* Convert to upper case */
1362 0 0 c = (c << 4) + cc - ((cc < CHAR_A)? CHAR_0 : (CHAR_A - 10));
1369 0 0 if (c > (utf ? 0x10ffffU : 0xffU)) { overflow = TRUE; break; }
0 0 if (c > (utf ? 0x10ffffU : 0xffU)) { overflow = TRUE; break; }
1377 0 0 if (overflow)
1379 0 0 while (MAX_255(*ptr) && (digitab[*ptr] & ctype_xdigit) != 0) ptr++;
1383 0 0 else if (*ptr == CHAR_RIGHT_CURLY_BRACKET)
1385 0 0 if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73;
0 0 if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73;
0 0 if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73;
1401 0 0 while (i++ < 2 && MAX_255(ptr[1]) && (digitab[ptr[1]] & ctype_xdigit) != 0)
0 0 while (i++ < 2 && MAX_255(ptr[1]) && (digitab[ptr[1]] & ctype_xdigit) != 0)
1406 0 0 if (cc >= CHAR_a) cc -= 32; /* Convert to upper case */
1407 0 0 c = c * 16 + cc - ((cc < CHAR_A)? CHAR_0 : (CHAR_A - 10));
1424 0 0 if (c == CHAR_NULL)
1430 0 0 if (c > 127) /* Excludes all non-ASCII in either mode */
1435 0 0 if (c >= CHAR_a && c <= CHAR_z) c -= 32;
0 0 if (c >= CHAR_a && c <= CHAR_z) c -= 32;
1459 0 0 if ((options & PCRE_EXTRA) != 0) switch(c)
1473 0 104 if (escape == ESC_N && ptr[1] == CHAR_LEFT_CURLY_BRACKET &&
1479 0 104 if ((options & PCRE_UCP) != 0 && escape >= ESC_D && escape <= ESC_w)
0 0 if ((options & PCRE_UCP) != 0 && escape >= ESC_D && escape <= ESC_w)
0 0 if ((options & PCRE_UCP) != 0 && escape >= ESC_D && escape <= ESC_w)
1613 0 0 while (IS_DIGIT(*p))
0 0 while (IS_DIGIT(*p))
1616 0 0 if (min > 65535)
1623 0 0 if (*p == CHAR_RIGHT_CURLY_BRACKET) max = min; else
1625 0 0 if (*(++p) != CHAR_RIGHT_CURLY_BRACKET)
1628 0 0 while(IS_DIGIT(*p))
0 0 while(IS_DIGIT(*p))
1631 0 0 if (max > 65535)
1637 0 0 if (max < min)
1679 0 0 if (!skipassert) return code;
1680 0 0 do code += GET(code, 1); while (*code == OP_ALT);
1686 0 0 if (!skipassert) return code;
1766 0 0 d = find_fixedlength(cc + ((op == OP_CBRA)? IMM2_SIZE : 0), utf, atend, cd,
1768 0 0 if (d < 0) return d;
1770 0 0 do cc += GET(cc, 1); while (*cc == OP_ALT);
1785 0 0 if (length < 0) length = branchlength;
1786 0 0 else if (length != branchlength) return -1;
1787 0 0 if (*cc != OP_ALT) return length;
1797 0 0 if (!atend) return -3;
1799 0 0 do ce += GET(ce, 1); while (*ce == OP_ALT); /* End subpattern */
1800 0 0 if (cc > cs && cc < ce) return -1; /* Recursion */
0 0 if (cc > cs && cc < ce) return -1; /* Recursion */
1804 0 0 for (r = recurses; r != NULL; r = r->prev) if (r->group == cs) break;
0 0 for (r = recurses; r != NULL; r = r->prev) if (r->group == cs) break;
1805 0 0 if (r != NULL) return -1; /* Mutual recursion */
1810 0 0 if (d < 0) return d;
1821 0 0 do cc += GET(cc, 1); while (*cc == OP_ALT);
1890 0 0 if (cc[1 + IMM2_SIZE] == OP_PROP || cc[1 + IMM2_SIZE] == OP_NOTPROP)
0 0 if (cc[1 + IMM2_SIZE] == OP_PROP || cc[1 + IMM2_SIZE] == OP_NOTPROP)
1956 0 0 if (GET2(cc,1) != GET2(cc,1+IMM2_SIZE)) return -1;
2087 0 0 if (c == OP_END) return NULL;
2093 0 0 if (c == OP_XCLASS) code += GET(code, 1);
2097 0 0 else if (c == OP_REVERSE)
2099 0 0 if (number < 0) return (pcre_uchar *)code;
2105 0 0 else if (c == OP_CBRA || c == OP_SCBRA ||
0 0 else if (c == OP_CBRA || c == OP_SCBRA ||
0 0 else if (c == OP_CBRA || c == OP_SCBRA ||
2106 0 0 c == OP_CBRAPOS || c == OP_SCBRAPOS)
2109 0 0 if (n == number) return (pcre_uchar *)code;
2131 0 0 if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2;
0 0 if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2;
2138 0 0 if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP)
0 0 if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP)
2249 6 24 if (c == OP_END) return NULL;
2250 0 24 if (c == OP_RECURSE) return code;
2256 0 24 if (c == OP_XCLASS) code += GET(code, 1);
2276 0 0 if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2;
0 0 if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2;
2283 0 0 if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP)
0 0 if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP)
2403 44 0 for (code = first_significant_code(code + PRIV(OP_lengths)[*code], TRUE);
2414 0 44 if (c == OP_ASSERT)
2416 0 0 do code += GET(code, 1); while (*code == OP_ALT);
2428 0 44 if (c == OP_RECURSE)
2438 0 0 if (cd->start_workspace != NULL)
2441 0 0 for (tcode = cd->start_workspace; tcode < cd->hwm; tcode += LINK_SIZE)
2442 0 0 if ((int)GET(tcode, 0) == (int)(code + 1 - cd->start_code)) return TRUE;
2443 0 0 if (GET(scode, 1) == 0) return TRUE; /* Unclosed */
2451 0 0 do endgroup += GET(endgroup, 1); while (*endgroup == OP_ALT);
2452 0 0 if (code >= scode && code <= endgroup) continue; /* Simple recursion */
0 0 if (code >= scode && code <= endgroup) continue; /* Simple recursion */
2456 0 0 for (r = recurses; r != NULL; r = r->prev)
2457 0 0 if (r->group == scode) break;
2458 0 0 if (r != NULL) continue; /* Mutual recursion */
2470 0 0 if (could_be_empty_branch(scode, endcode, utf, cd, &this_recurse))
2477 0 0 while (*scode == OP_ALT);
2479 0 0 if (!empty_branch) return FALSE; /* All branches are non-empty */
2485 44 0 if (c == OP_BRAZERO || c == OP_BRAMINZERO || c == OP_SKIPZERO ||
44 0 if (c == OP_BRAZERO || c == OP_BRAMINZERO || c == OP_SKIPZERO ||
44 0 if (c == OP_BRAZERO || c == OP_BRAMINZERO || c == OP_SKIPZERO ||
0 44 if (c == OP_BRAZERO || c == OP_BRAMINZERO || c == OP_SKIPZERO ||
2489 0 0 do code += GET(code, 1); while (*code == OP_ALT);
2497 44 0 if (c == OP_SBRA || c == OP_SBRAPOS ||
44 0 if (c == OP_SBRA || c == OP_SBRAPOS ||
44 0 if (c == OP_SBRA || c == OP_SBRAPOS ||
2498 0 44 c == OP_SCBRA || c == OP_SCBRAPOS)
2500 0 0 do code += GET(code, 1); while (*code == OP_ALT);
2507 44 0 if (c == OP_BRA || c == OP_BRAPOS ||
44 0 if (c == OP_BRA || c == OP_BRAPOS ||
44 0 if (c == OP_BRA || c == OP_BRAPOS ||
2508 44 0 c == OP_CBRA || c == OP_CBRAPOS ||
44 0 c == OP_CBRA || c == OP_CBRAPOS ||
2509 44 0 c == OP_ONCE || c == OP_ONCE_NC ||
44 0 c == OP_ONCE || c == OP_ONCE_NC ||
2510 0 44 c == OP_COND || c == OP_SCOND)
2513 0 0 if (GET(code, 1) == 0) return TRUE; /* Hit unclosed bracket */
2519 0 0 if (c == OP_COND && code[GET(code, 1)] != OP_ALT)
0 0 if (c == OP_COND && code[GET(code, 1)] != OP_ALT)
2526 0 0 if (!empty_branch && could_be_empty_branch(code, endcode, utf, cd,
0 0 if (!empty_branch && could_be_empty_branch(code, endcode, utf, cd,
2530 0 0 while (*code == OP_ALT);
2531 0 0 if (!empty_branch) return FALSE; /* All branches are non-empty */
2581 0 0 if (GET2(ccode, 1) > 0) return FALSE; /* Minimum > 0 */
2650 0 0 if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2;
0 0 if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2;
2658 0 0 if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP)
0 0 if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP)
2775 0 0 while (bcptr != NULL && bcptr->current_branch >= code)
0 0 while (bcptr != NULL && bcptr->current_branch >= code)
2777 0 0 if (!could_be_empty_branch(bcptr->current_branch, endcode, utf, cd, NULL))
2800 52 0 return (c > OP_TYPEPOSUPTO)? c :
0 52 return (c > OP_TYPEPOSUPTO)? c :
0 0 return (c > OP_TYPEPOSUPTO)? c :
0 0 return (c > OP_TYPEPOSUPTO)? c :
0 0 return (c > OP_TYPEPOSUPTO)? c :
2935 26 23 if (c >= OP_STAR && c <= OP_TYPEPOSUPTO)
26 0 if (c >= OP_STAR && c <= OP_TYPEPOSUPTO)
2940 26 0 if (c == OP_UPTO || c == OP_MINUPTO || c == OP_EXACT || c == OP_POSUPTO)
26 0 if (c == OP_UPTO || c == OP_MINUPTO || c == OP_EXACT || c == OP_POSUPTO)
26 0 if (c == OP_UPTO || c == OP_MINUPTO || c == OP_EXACT || c == OP_POSUPTO)
0 26 if (c == OP_UPTO || c == OP_MINUPTO || c == OP_EXACT || c == OP_POSUPTO)
2943 21 5 list[1] = (c != OP_PLUS && c != OP_MINPLUS && c != OP_EXACT && c != OP_POSPLUS);
21 0 list[1] = (c != OP_PLUS && c != OP_MINPLUS && c != OP_EXACT && c != OP_POSPLUS);
21 0 list[1] = (c != OP_PLUS && c != OP_MINPLUS && c != OP_EXACT && c != OP_POSPLUS);
21 0 list[1] = (c != OP_PLUS && c != OP_MINPLUS && c != OP_EXACT && c != OP_POSPLUS);
3002 0 0 list[0] = (c == OP_CHARI) ? OP_CHAR : OP_NOT;
3019 0 0 if (chr == list[3])
3139 0 26 if (*rec_limit == 0) return FALSE;
3156 0 29 if (c == OP_CALLOUT)
3162 0 29 if (c == OP_ALT)
3164 0 0 do code += GET(code, 1); while (*code == OP_ALT);
3183 0 3 if (base_list[1] == 0) return FALSE;
3185 0 3 switch(*(code - GET(code, 1)))
3210 0 0 while (*next_code == OP_ALT)
3212 0 0 if (!compare_opcodes(code, utf, cd, base_list, base_end, rec_limit))
3225 0 0 if (*next_code != OP_BRA && *next_code != OP_CBRA
0 0 if (*next_code != OP_BRA && *next_code != OP_CBRA
3226 0 0 && *next_code != OP_ONCE && *next_code != OP_ONCE_NC) return FALSE;
0 0 && *next_code != OP_ONCE && *next_code != OP_ONCE_NC) return FALSE;
3228 0 0 do next_code += GET(next_code, 1); while (*next_code == OP_ALT);
3233 0 0 if (!compare_opcodes(next_code, utf, cd, base_list, base_end, rec_limit))
3246 0 23 if (code == NULL) return FALSE; /* Unsupported */
3251 0 23 if (base_list[0] == OP_CHAR)
3256 23 0 else if (list[0] == OP_CHAR)
3264 0 0 else if (base_list[0] == OP_CLASS || list[0] == OP_CLASS
0 0 else if (base_list[0] == OP_CLASS || list[0] == OP_CLASS
3267 0 0 || (!utf && (base_list[0] == OP_NCLASS || list[0] == OP_NCLASS))
0 0 || (!utf && (base_list[0] == OP_NCLASS || list[0] == OP_NCLASS))
0 0 || (!utf && (base_list[0] == OP_NCLASS || list[0] == OP_NCLASS))
3272 0 0 if (base_list[0] == OP_CLASS || (!utf && base_list[0] == OP_NCLASS))
0 0 if (base_list[0] == OP_CLASS || (!utf && base_list[0] == OP_NCLASS))
0 0 if (base_list[0] == OP_CLASS || (!utf && base_list[0] == OP_NCLASS))
3292 0 0 ((list_ptr == list ? code : base_end) - list_ptr[2]);
3338 0 0 if (invert_bits)
3342 0 0 if ((*set1++ & ~(*set2++)) != 0) return FALSE;
3344 0 0 while (set1 < set_end);
3350 0 0 if ((*set1++ & *set2++) != 0) return FALSE;
3352 0 0 while (set1 < set_end);
3355 0 0 if (list[1] == 0) return TRUE;
3475 0 0 accepted = leftop >= FIRST_AUTOTAB_OP && leftop <= LAST_AUTOTAB_LEFT_OP &&
0 0 accepted = leftop >= FIRST_AUTOTAB_OP && leftop <= LAST_AUTOTAB_LEFT_OP &&
3476 0 0 rightop >= FIRST_AUTOTAB_OP && rightop <= LAST_AUTOTAB_RIGHT_OP &&
0 0 rightop >= FIRST_AUTOTAB_OP && rightop <= LAST_AUTOTAB_RIGHT_OP &&
0 0 rightop >= FIRST_AUTOTAB_OP && rightop <= LAST_AUTOTAB_RIGHT_OP &&
3479 0 0 if (!accepted) return FALSE;
3481 0 0 if (list[1] == 0) return TRUE;
3499 0 0 if (chr == *ochr_ptr) return FALSE;
3502 0 0 while(*ochr_ptr != NOTACHAR);
3509 0 0 if (chr == *ochr_ptr)
3513 0 0 while(*ochr_ptr != NOTACHAR);
3514 0 0 if (*ochr_ptr == NOTACHAR) return FALSE; /* Not found */
3521 0 0 if (chr < 256 && (cd->ctypes[chr] & ctype_digit) != 0) return FALSE;
0 0 if (chr < 256 && (cd->ctypes[chr] & ctype_digit) != 0) return FALSE;
3525 0 0 if (chr > 255 || (cd->ctypes[chr] & ctype_digit) == 0) return FALSE;
0 0 if (chr > 255 || (cd->ctypes[chr] & ctype_digit) == 0) return FALSE;
3529 0 0 if (chr < 256 && (cd->ctypes[chr] & ctype_space) != 0) return FALSE;
0 0 if (chr < 256 && (cd->ctypes[chr] & ctype_space) != 0) return FALSE;
3533 0 0 if (chr > 255 || (cd->ctypes[chr] & ctype_space) == 0) return FALSE;
0 0 if (chr > 255 || (cd->ctypes[chr] & ctype_space) == 0) return FALSE;
3537 0 0 if (chr < 255 && (cd->ctypes[chr] & ctype_word) != 0) return FALSE;
0 0 if (chr < 255 && (cd->ctypes[chr] & ctype_word) != 0) return FALSE;
3541 0 0 if (chr > 255 || (cd->ctypes[chr] & ctype_word) == 0) return FALSE;
0 0 if (chr > 255 || (cd->ctypes[chr] & ctype_word) == 0) return FALSE;
3545 0 0 switch(chr)
3553 0 0 switch(chr)
3562 0 0 switch(chr)
3570 0 0 switch(chr)
3579 0 0 switch (chr)
3607 0 0 if (chr > 255) return FALSE;
3611 0 0 if (chr > 255) break;
3613 0 0 ((list_ptr == list ? code : base_end) - list_ptr[2]);
3614 0 0 if ((class_bitset[chr >> 3] & (1 << (chr & 7))) != 0) return FALSE;
3630 0 0 while(*chr_ptr != NOTACHAR);
3634 0 0 if (list[1] == 0) return TRUE;
3678 0 533 if (c >= OP_TABLE_LENGTH) return;
3680 97 436 if (c >= OP_STAR && c <= OP_TYPEPOSUPTO)
26 71 if (c >= OP_STAR && c <= OP_TYPEPOSUPTO)
3684 26 0 get_chr_property_list(code, utf, cd->fcc, list) : NULL;
3685 5 21 list[1] = c == OP_STAR || c == OP_PLUS || c == OP_QUERY || c == OP_UPTO;
0 5 list[1] = c == OP_STAR || c == OP_PLUS || c == OP_QUERY || c == OP_UPTO;
0 0 list[1] = c == OP_STAR || c == OP_PLUS || c == OP_QUERY || c == OP_UPTO;
0 0 list[1] = c == OP_STAR || c == OP_PLUS || c == OP_QUERY || c == OP_UPTO;
3688 26 0 if (end != NULL && compare_opcodes(end, utf, cd, list, end, &rec_limit))
3 23 if (end != NULL && compare_opcodes(end, utf, cd, list, end, &rec_limit))
3727 507 0 else if (c == OP_CLASS || c == OP_NCLASS || c == OP_XCLASS)
507 0 else if (c == OP_CLASS || c == OP_NCLASS || c == OP_XCLASS)
0 507 else if (c == OP_CLASS || c == OP_NCLASS || c == OP_XCLASS)
3737 0 0 if (c >= OP_CRSTAR && c <= OP_CRMINRANGE)
0 0 if (c >= OP_CRSTAR && c <= OP_CRMINRANGE)
3745 0 0 if (compare_opcodes(end, utf, cd, list, end, &rec_limit))
3788 26 0 if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2;
0 26 if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2;
3795 0 0 if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP)
0 0 if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP)
3938 0 0 for (++ptr; *ptr != CHAR_NULL; ptr++)
3940 0 0 if (*ptr == CHAR_BACKSLASH &&
0 0 if (*ptr == CHAR_BACKSLASH &&
3941 0 0 (ptr[1] == CHAR_RIGHT_SQUARE_BRACKET ||
3944 0 0 else if ((*ptr == CHAR_LEFT_SQUARE_BRACKET && ptr[1] == terminator) ||
0 0 else if ((*ptr == CHAR_LEFT_SQUARE_BRACKET && ptr[1] == terminator) ||
0 0 else if ((*ptr == CHAR_LEFT_SQUARE_BRACKET && ptr[1] == terminator) ||
3946 0 0 else if (*ptr == terminator && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET)
0 0 else if (*ptr == terminator && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET)
3977 0 0 while (posix_name_lengths[yield] != 0)
3979 0 0 if (len == posix_name_lengths[yield] &&
0 0 if (len == posix_name_lengths[yield] &&
4028 0 6 while ((ptr = (pcre_uchar *)find_recurse(ptr, utf)) != NULL)
4030 0 0 for (hc = (pcre_uchar *)cd->start_workspace + save_hwm_offset; hc < cd->hwm;
4034 0 0 if (cd->start_code + offset == ptr + 1) break;
4040 0 0 if (hc >= cd->hwm)
4043 0 0 if (cd->start_code + offset >= group) PUT(ptr, 1, offset + adjust);
4051 0 6 for (hc = (pcre_uchar *)cd->start_workspace + save_hwm_offset; hc < cd->hwm;
4219 0 0 if ((options & PCRE_CASELESS) != 0)
4259 0 0 for (c = start; c <= classbits_end; c++)
4274 0 0 if (end > 0xff) end = 0xff;
4286 0 0 for (c = start; c <= classbits_end; c++)
4375 0 0 while (p[0] < NOTACHAR)
4378 0 0 if (p[0] != except)
4380 0 0 while(p[n+1] == p[0] + n + 1) n++;
4414 0 0 if (p[0] > 0)
4416 0 0 while (p[0] < NOTACHAR)
4418 0 0 while (p[1] == p[0] + 1) p++;
4419 0 0 n8 += add_to_class(classbits, uchardptr, options, cd, p[0] + 1,
4420 0 0 (p[1] == NOTACHAR) ? (utf ? 0x10ffffu : 0xffffffffu) : p[1] - 1);
4586 62 932 if (c == CHAR_NULL && nestptr != NULL)
0 62 if (c == CHAR_NULL && nestptr != NULL)
4596 497 497 if (lengthptr != NULL)
4601 0 497 if (code > cd->start_workspace + cd->workspace_size -
4605 0 0 ERR52 : ERR87;
4615 0 497 if (code < last_code) code = last_code;
4619 0 497 if (OFLOW_MAX - *lengthptr < code - last_code)
4633 418 79 if (previous != NULL)
4635 363 55 if (previous > orig_code)
4653 0 497 else if (cd->hwm > cd->start_workspace + cd->workspace_size)
4662 932 62 if (c != CHAR_NULL)
4664 104 828 if (c == CHAR_BACKSLASH && ptr[1] == CHAR_E)
0 104 if (c == CHAR_BACKSLASH && ptr[1] == CHAR_E)
4670 0 932 else if (inescq)
4672 0 0 if (previous_callout != NULL)
4674 0 0 if (lengthptr == NULL) /* Don't attempt in pre-compile phase */
4678 0 0 if ((options & PCRE_AUTO_CALLOUT) != 0)
4690 104 828 if (c == CHAR_BACKSLASH && ptr[1] == CHAR_Q)
0 104 if (c == CHAR_BACKSLASH && ptr[1] == CHAR_Q)
4700 0 994 if ((options & PCRE_EXTENDED) != 0)
4703 0 0 while (MAX_255(c) && (cd->ctypes[c] & ctype_space) != 0) c = *(++ptr);
4704 0 0 if (c == CHAR_NUMBER_SIGN)
4707 0 0 while (*ptr != CHAR_NULL)
4709 0 0 if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */
0 0 if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */
0 0 if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */
0 0 if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */
0 0 if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */
0 0 if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */
0 0 if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */
0 0 if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */
4724 0 0 if (ptr > wscptr) goto REDO_LOOP;
4731 6 988 if (c == CHAR_LEFT_PARENTHESIS && ptr[1] == CHAR_QUESTION_MARK &&
0 6 if (c == CHAR_LEFT_PARENTHESIS && ptr[1] == CHAR_QUESTION_MARK &&
0 0 if (c == CHAR_LEFT_PARENTHESIS && ptr[1] == CHAR_QUESTION_MARK &&
4735 0 0 while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++;
0 0 while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++;
4736 0 0 if (*ptr == CHAR_NULL)
4747 952 42 c == CHAR_ASTERISK || c == CHAR_PLUS || c == CHAR_QUESTION_MARK ||
942 10 c == CHAR_ASTERISK || c == CHAR_PLUS || c == CHAR_QUESTION_MARK ||
936 6 c == CHAR_ASTERISK || c == CHAR_PLUS || c == CHAR_QUESTION_MARK ||
0 936 c == CHAR_ASTERISK || c == CHAR_PLUS || c == CHAR_QUESTION_MARK ||
4748 0 0 (c == CHAR_LEFT_CURLY_BRACKET && is_counted_repeat(ptr+1));
4753 936 58 if (!is_quantifier && previous_callout != NULL && nestptr == NULL &&
0 936 if (!is_quantifier && previous_callout != NULL && nestptr == NULL &&
0 0 if (!is_quantifier && previous_callout != NULL && nestptr == NULL &&
0 0 if (!is_quantifier && previous_callout != NULL && nestptr == NULL &&
4756 0 0 if (lengthptr == NULL) /* Don't attempt in pre-compile phase */
4764 0 994 if ((options & PCRE_AUTO_CALLOUT) != 0 && !is_quantifier && nestptr == NULL)
0 0 if ((options & PCRE_AUTO_CALLOUT) != 0 && !is_quantifier && nestptr == NULL)
0 0 if ((options & PCRE_AUTO_CALLOUT) != 0 && !is_quantifier && nestptr == NULL)
4784 34 34 if (lengthptr != NULL)
4786 0 34 if (OFLOW_MAX - *lengthptr < code - last_code)
4803 0 16 if ((options & PCRE_MULTILINE) != 0)
4805 0 0 if (firstcharflags == REQ_UNSET)
4814 0 16 *code++ = ((options & PCRE_MULTILINE) != 0)? OP_DOLLM : OP_DOLL;
4821 0 52 if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE;
4828 0 52 *code++ = ((options & PCRE_DOTALL) != 0)? OP_ALLANY: OP_ANY;
4848 0 0 if ((cd->external_options & PCRE_JAVASCRIPT_COMPAT) != 0)
4862 0 0 if (STRNCMP_UC_C8(ptr+1, STRING_WEIRD_STARTWORD, 6) == 0)
4869 0 0 if (STRNCMP_UC_C8(ptr+1, STRING_WEIRD_ENDWORD, 6) == 0)
4884 0 0 if ((ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT ||
0 0 if ((ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT ||
0 0 if ((ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT ||
4885 0 0 ptr[1] == CHAR_EQUALS_SIGN) &&
4888 0 0 *errorcodeptr = (ptr[1] == CHAR_COLON)? ERR13 : ERR31;
4900 0 0 if (c == CHAR_BACKSLASH)
4902 0 0 if (ptr[1] == CHAR_E)
4904 0 0 else if (STRNCMP_UC_C8(ptr + 1, STR_Q STR_BACKSLASH STR_E, 3) == 0)
4909 0 0 else if (!negate_class && c == CHAR_CIRCUMFLEX_ACCENT)
0 0 else if (!negate_class && c == CHAR_CIRCUMFLEX_ACCENT)
4919 0 0 if (c == CHAR_RIGHT_SQUARE_BRACKET &&
0 0 if (c == CHAR_RIGHT_SQUARE_BRACKET &&
4922 0 0 *code++ = negate_class? OP_ALLANY : OP_FAIL;
4923 0 0 if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE;
4967 0 0 if (c != CHAR_NULL) do
4996 0 0 if (inescq)
4998 0 0 if (c == CHAR_BACKSLASH && ptr[1] == CHAR_E) /* If we are at \E */
0 0 if (c == CHAR_BACKSLASH && ptr[1] == CHAR_E) /* If we are at \E */
5013 0 0 if (c == CHAR_LEFT_SQUARE_BRACKET &&
0 0 if (c == CHAR_LEFT_SQUARE_BRACKET &&
5014 0 0 (ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT ||
0 0 (ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT ||
5015 0 0 ptr[1] == CHAR_EQUALS_SIGN) && check_posix_syntax(ptr, &tempptr))
5022 0 0 if (ptr[1] != CHAR_COLON)
5029 0 0 if (*ptr == CHAR_CIRCUMFLEX_ACCENT)
5037 0 0 if (posix_class < 0)
5047 0 0 if ((options & PCRE_CASELESS) != 0 && posix_class <= 2)
0 0 if ((options & PCRE_CASELESS) != 0 && posix_class <= 2)
5135 0 0 if (taboffset >= 0)
5137 0 0 if (tabopt >= 0)
5138 0 0 for (c = 0; c < 32; c++) pbits[c] |= cbits[c + taboffset];
5140 0 0 for (c = 0; c < 32; c++) pbits[c] &= ~cbits[c + taboffset];
5146 0 0 if (tabopt < 0) tabopt = -tabopt;
5147 0 0 if (tabopt == 1) pbits[1] &= ~0x3c;
5148 0 0 else if (tabopt == 2) pbits[11] &= 0x7f;
5153 0 0 if (local_negate)
5154 0 0 for (c = 0; c < 32; c++) classbits[c] |= ~pbits[c];
5156 0 0 for (c = 0; c < 32; c++) classbits[c] |= pbits[c];
5175 0 0 if (c == CHAR_BACKSLASH)
5179 0 0 if (*errorcodeptr != 0) goto FAILED;
5180 0 0 if (escape == 0) c = ec;
5181 0 0 else if (escape == ESC_b) c = CHAR_BS; /* \b is backspace in a class */
5182 0 0 else if (escape == ESC_N) /* \N is not supported in a class */
5187 0 0 else if (escape == ESC_Q) /* Handle start of quoted string */
5189 0 0 if (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E)
0 0 if (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E)
5196 0 0 else if (escape == ESC_E) continue; /* Ignore orphan \E */
5221 0 0 for (c = 0; c < 32; c++) classbits[c] |= cbits[c+cbit_digit];
5226 0 0 for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_digit];
5230 0 0 for (c = 0; c < 32; c++) classbits[c] |= cbits[c+cbit_word];
5235 0 0 for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_word];
5246 0 0 for (c = 0; c < 32; c++) classbits[c] |= cbits[c+cbit_space];
5251 0 0 for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_space];
5301 0 0 if ((options & PCRE_EXTRA) != 0)
5326 0 0 while (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E)
0 0 while (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E)
5335 0 0 if (c == CHAR_CR || c == CHAR_NL) cd->external_flags |= PCRE_HASCRORLF;
0 0 if (c == CHAR_CR || c == CHAR_NL) cd->external_flags |= PCRE_HASCRORLF;
5339 0 0 if (!inescq && ptr[1] == CHAR_MINUS)
0 0 if (!inescq && ptr[1] == CHAR_MINUS)
5343 0 0 while (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_E) ptr += 2;
0 0 while (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_E) ptr += 2;
5348 0 0 while (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_Q)
0 0 while (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_Q)
5351 0 0 if (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_E)
0 0 if (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_E)
5360 0 0 if (*ptr == CHAR_NULL || (!inescq && *ptr == CHAR_RIGHT_SQUARE_BRACKET))
0 0 if (*ptr == CHAR_NULL || (!inescq && *ptr == CHAR_RIGHT_SQUARE_BRACKET))
0 0 if (*ptr == CHAR_NULL || (!inescq && *ptr == CHAR_RIGHT_SQUARE_BRACKET))
5383 0 0 if (!inescq)
5385 0 0 if (d == CHAR_BACKSLASH)
5389 0 0 if (*errorcodeptr != 0) goto FAILED;
5394 0 0 if (descape != 0)
5396 0 0 if (descape == ESC_b) d = CHAR_BS; else
5406 0 0 else if (d == CHAR_LEFT_SQUARE_BRACKET &&
0 0 else if (d == CHAR_LEFT_SQUARE_BRACKET &&
5407 0 0 (ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT ||
0 0 (ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT ||
5408 0 0 ptr[1] == CHAR_EQUALS_SIGN) &&
5419 0 0 if (d < c)
5424 0 0 if (d == c) goto CLASS_SINGLE_CHARACTER; /* A few lines below */
5434 0 0 if (d == CHAR_CR || d == CHAR_NL) cd->external_flags |= PCRE_HASCRORLF;
0 0 if (d == CHAR_CR || d == CHAR_NL) cd->external_flags |= PCRE_HASCRORLF;
5449 0 0 if (class_one_char < 2) class_one_char++;
5460 0 0 if (!inescq &&
0 0 if (!inescq &&
5464 0 0 class_one_char == 1 && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET)
5470 0 0 if (negate_class)
5475 0 0 if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE;
5496 0 0 *code++ = ((options & PCRE_CASELESS) != 0)? OP_NOTI: OP_NOT;
5536 0 0 while (((c = *(++ptr)) != CHAR_NULL ||
5537 0 0 (nestptr != NULL &&
5538 0 0 (ptr = nestptr, nestptr = NULL, c = *(++ptr)) != CHAR_NULL)) &&
5539 0 0 (c != CHAR_RIGHT_SQUARE_BRACKET || inescq));
0 0 (c != CHAR_RIGHT_SQUARE_BRACKET || inescq));
5543 0 0 if (c == CHAR_NULL)
5565 0 0 if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE;
5655 0 0 *code++ = (negate_class == should_flip_negation) ? OP_CLASS : OP_NCLASS;
5656 0 0 if (lengthptr == NULL) /* Save time in the pre-compile phase */
5658 0 0 if (negate_class)
5659 0 0 for (c = 0; c < 32; c++) classbits[c] = ~classbits[c];
5673 0 0 if (!is_quantifier) goto NORMAL_CHAR;
5675 0 0 if (*errorcodeptr != 0) goto FAILED;
5693 0 58 if (previous == NULL)
5699 48 10 if (repeat_min == 0)
5709 0 58 reqvary = (repeat_min == repeat_max)? 0 : REQ_VARY;
5723 0 58 if ((options & PCRE_EXTENDED) != 0)
5728 0 0 while (MAX_255(*p) && (cd->ctypes[*p] & ctype_space) != 0) p++;
5729 0 0 if (*p != CHAR_NUMBER_SIGN) break;
5731 0 0 while (*p != CHAR_NULL)
5733 0 0 if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */
0 0 if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */
0 0 if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */
0 0 if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */
0 0 if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */
0 0 if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */
0 0 if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */
0 0 if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */
5750 0 58 if (ptr[1] == CHAR_LEFT_PARENTHESIS && ptr[2] == CHAR_QUESTION_MARK &&
0 0 if (ptr[1] == CHAR_LEFT_PARENTHESIS && ptr[2] == CHAR_QUESTION_MARK &&
0 0 if (ptr[1] == CHAR_LEFT_PARENTHESIS && ptr[2] == CHAR_QUESTION_MARK &&
5754 0 0 while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++;
0 0 while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++;
5755 0 0 if (*ptr == CHAR_NULL)
5768 0 58 if (ptr[1] == CHAR_PLUS)
5774 0 58 else if (ptr[1] == CHAR_QUESTION_MARK)
5787 0 58 if (*previous == OP_RECURSE)
5800 0 0 if (lengthptr == NULL && cd->hwm >= cd->start_workspace + LINK_SIZE)
0 0 if (lengthptr == NULL && cd->hwm >= cd->start_workspace + LINK_SIZE)
5803 0 0 if (offset == previous + 1 - cd->start_code)
5816 58 0 if (*previous == OP_CHAR || *previous == OP_CHARI
58 0 if (*previous == OP_CHAR || *previous == OP_CHARI
5817 58 0 || *previous == OP_NOT || *previous == OP_NOTI)
0 58 || *previous == OP_NOT || *previous == OP_NOTI)
5849 0 0 if (*previous <= OP_CHARI && repeat_min > 1)
0 0 if (*previous <= OP_CHARI && repeat_min > 1)
5866 52 6 else if (*previous < OP_EODN)
5874 52 0 if (*previous == OP_PROP || *previous == OP_NOTPROP)
0 52 if (*previous == OP_PROP || *previous == OP_NOTPROP)
5887 0 52 if (repeat_max == 0) goto END_REPEAT;
5896 42 10 if (repeat_min == 0)
5898 42 0 if (repeat_max == -1) *code++ = OP_STAR + repeat_type;
5899 0 0 else if (repeat_max == 1) *code++ = OP_QUERY + repeat_type;
5912 10 0 else if (repeat_min == 1)
5914 10 0 if (repeat_max == -1)
5919 0 0 if (repeat_max == 1) goto END_REPEAT;
5939 0 0 if (repeat_max < 0)
5951 0 0 if (prop_type >= 0)
5964 0 0 else if (repeat_max != repeat_min)
5975 0 0 if (prop_type >= 0)
5982 0 0 if (repeat_max == 1)
6021 6 0 else if (*previous == OP_CLASS || *previous == OP_NCLASS ||
6 0 else if (*previous == OP_CLASS || *previous == OP_NCLASS ||
6 0 else if (*previous == OP_CLASS || *previous == OP_NCLASS ||
6025 6 0 *previous == OP_REF || *previous == OP_REFI ||
6 0 *previous == OP_REF || *previous == OP_REFI ||
6026 0 6 *previous == OP_DNREF || *previous == OP_DNREFI)
6028 0 0 if (repeat_max == 0)
6034 0 0 if (repeat_min == 0 && repeat_max == -1)
0 0 if (repeat_min == 0 && repeat_max == -1)
6036 0 0 else if (repeat_min == 1 && repeat_max == -1)
0 0 else if (repeat_min == 1 && repeat_max == -1)
6038 0 0 else if (repeat_min == 0 && repeat_max == 1)
0 0 else if (repeat_min == 0 && repeat_max == 1)
6044 0 0 if (repeat_max == -1) repeat_max = 0; /* 2-byte encoding for max */
6058 6 0 else if (*previous >= OP_ASSERT && *previous <= OP_COND)
6 0 else if (*previous >= OP_ASSERT && *previous <= OP_COND)
6069 0 6 if (*previous == OP_COND && previous[LINK_SIZE+1] == OP_DEF)
0 0 if (*previous == OP_COND && previous[LINK_SIZE+1] == OP_DEF)
6077 0 6 if (*previous < OP_ONCE) /* Assertion */
6079 0 0 if (repeat_min > 0) goto END_REPEAT;
6080 0 0 if (repeat_max < 0 || repeat_max > 1) repeat_max = 1;
0 0 if (repeat_max < 0 || repeat_max > 1) repeat_max = 1;
6090 6 0 if (repeat_min == 0)
6114 6 0 if (repeat_max <= 1) /* Covers 0, 1, and unlimited */
6120 0 6 if (repeat_max == 0)
6150 0 0 offset = (bralink == NULL)? 0 : (int)(previous - bralink);
6167 0 0 if (repeat_min > 1)
6174 0 0 if (lengthptr != NULL)
6177 0 0 if ((INT64_OR_DOUBLE)(repeat_min - 1)*
6179 0 0 (INT64_OR_DOUBLE)INT_MAX ||
6195 0 0 if (groupsetfirstchar && reqcharflags < 0)
0 0 if (groupsetfirstchar && reqcharflags < 0)
6201 0 0 for (i = 1; i < repeat_min; i++)
6207 0 0 while (cd->hwm > cd->start_workspace + cd->workspace_size -
6212 0 0 if (*errorcodeptr != 0) goto FAILED;
6215 0 0 for (hc = (pcre_uchar *)cd->start_workspace + base_hwm_offset;
6228 0 0 if (repeat_max > 0) repeat_max -= repeat_min;
6238 6 0 if (repeat_max >= 0)
6247 3 3 if (lengthptr != NULL && repeat_max > 0)
0 3 if (lengthptr != NULL && repeat_max > 0)
6251 0 0 if ((INT64_OR_DOUBLE)repeat_max *
6253 0 0 > (INT64_OR_DOUBLE)INT_MAX ||
6264 0 6 else for (i = repeat_max - 1; i >= 0; i--)
6274 0 0 if (i != 0)
6278 0 0 offset = (bralink == NULL)? 0 : (int)(code - bralink);
6288 0 0 while (cd->hwm > cd->start_workspace + cd->workspace_size -
6293 0 0 if (*errorcodeptr != 0) goto FAILED;
6296 0 0 for (hc = (pcre_uchar *)cd->start_workspace + base_hwm_offset;
6300 0 0 PUT(cd->hwm, 0, GET(hc, 0) + len + ((i != 0)? 2+LINK_SIZE : 1));
0 0 PUT(cd->hwm, 0, GET(hc, 0) + len + ((i != 0)? 2+LINK_SIZE : 1));
6310 0 6 while (bralink != NULL)
6316 0 0 bralink = (oldlinkoffset == 0)? NULL : bralink - oldlinkoffset;
6355 0 0 if ((*bracode == OP_ONCE || *bracode == OP_ONCE_NC) &&
0 0 if ((*bracode == OP_ONCE || *bracode == OP_ONCE_NC) &&
0 0 if ((*bracode == OP_ONCE || *bracode == OP_ONCE_NC) &&
6361 0 0 if (*bracode == OP_ONCE || *bracode == OP_ONCE_NC)
0 0 if (*bracode == OP_ONCE || *bracode == OP_ONCE_NC)
6371 0 0 if (lengthptr == NULL)
6376 0 0 if (could_be_empty_branch(scode, ketcode, utf, cd, NULL))
6383 0 0 while (*scode == OP_ALT);
6389 0 0 if (*bracode == OP_COND && bracode[GET(bracode,1)] != OP_ALT)
0 0 if (*bracode == OP_COND && bracode[GET(bracode,1)] != OP_ALT)
6394 0 0 if (possessive_quantifier)
6401 0 0 if (*bracode == OP_COND || *bracode == OP_SCOND)
0 0 if (*bracode == OP_COND || *bracode == OP_SCOND)
6409 0 0 *bracode = (*bracode == OP_COND)? OP_BRAPOS : OP_SBRAPOS;
6426 0 0 if (brazeroptr != NULL) *brazeroptr = OP_BRAPOSZERO;
6427 0 0 if (repeat_min < 2) possessive_quantifier = FALSE;
6442 0 0 else if (*previous == OP_FAIL) goto END_REPEAT;
6464 0 58 if (possessive_quantifier)
6479 0 0 || tempcode[1 + IMM2_SIZE] == OP_NOTPROP)? 2 : 0);
0 0 || tempcode[1 + IMM2_SIZE] == OP_NOTPROP)? 2 : 0);
6521 0 0 if (len > 0)
6529 0 0 if (repcode < OP_CALLOUT && opcode_possessify[repcode] > 0)
0 0 if (repcode < OP_CALLOUT && opcode_possessify[repcode] > 0)
6621 0 6 if (ptr[0] == CHAR_ASTERISK && (ptr[1] == ':'
0 0 if (ptr[0] == CHAR_ASTERISK && (ptr[1] == ':'
6622 0 0 || (MAX_255(ptr[1]) && ((cd->ctypes[ptr[1]] & ctype_letter) != 0))))
6631 0 0 while (MAX_255(*ptr) && (cd->ctypes[*ptr] & ctype_letter) != 0) ptr++;
6638 0 0 if (*ptr == CHAR_COLON)
6641 0 0 while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++;
0 0 while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++;
6643 0 0 if ((unsigned int)arglen > MAX_MARK)
6650 0 0 if (*ptr != CHAR_RIGHT_PARENTHESIS)
6658 0 0 for (i = 0; i < verbcount; i++)
6660 0 0 if (namelen == verbs[i].len &&
0 0 if (namelen == verbs[i].len &&
6668 0 0 if (verbs[i].op == OP_ACCEPT)
6671 0 0 if (arglen != 0)
6677 0 0 for (oc = cd->open_caps; oc != NULL; oc = oc->next)
6679 0 0 if (lengthptr != NULL)
6695 0 0 setverb = *code++ =
6699 0 0 if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE;
6704 0 0 else if (arglen == 0)
6706 0 0 if (verbs[i].op < 0) /* Argument is mandatory */
6716 0 0 if (verbs[i].op_arg < 0) /* Argument is forbidden */
6722 0 0 if (lengthptr != NULL) /* In pass 1 just add in the length */
6757 0 0 if (i < verbcount) continue; /* Successfully handled a verb */
6773 0 6 if (*ptr == CHAR_QUESTION_MARK)
6817 0 0 if (ptr[1] == CHAR_QUESTION_MARK && ptr[2] == CHAR_C)
0 0 if (ptr[1] == CHAR_QUESTION_MARK && ptr[2] == CHAR_C)
6819 0 0 for (i = 3;; i++) if (!IS_DIGIT(ptr[i])) break;
0 0 for (i = 3;; i++) if (!IS_DIGIT(ptr[i])) break;
6820 0 0 if (ptr[i] == CHAR_RIGHT_PARENTHESIS)
6826 0 0 if (*tempptr != CHAR_LEFT_PARENTHESIS)
6837 0 0 if (tempptr[1] == CHAR_QUESTION_MARK &&
0 0 if (tempptr[1] == CHAR_QUESTION_MARK &&
6838 0 0 (tempptr[2] == CHAR_EQUALS_SIGN ||
6839 0 0 tempptr[2] == CHAR_EXCLAMATION_MARK ||
6840 0 0 (tempptr[2] == CHAR_LESS_THAN_SIGN &&
6841 0 0 (tempptr[3] == CHAR_EQUALS_SIGN ||
6861 0 0 if (*ptr == CHAR_R && ptr[1] == CHAR_AMPERSAND)
0 0 if (*ptr == CHAR_R && ptr[1] == CHAR_AMPERSAND)
6872 0 0 else if (*ptr == CHAR_LESS_THAN_SIGN)
6877 0 0 else if (*ptr == CHAR_APOSTROPHE)
6885 0 0 if (*ptr == CHAR_MINUS || *ptr == CHAR_PLUS) refsign = *ptr++;
0 0 if (*ptr == CHAR_MINUS || *ptr == CHAR_PLUS) refsign = *ptr++;
6886 0 0 else if (IS_DIGIT(*ptr)) refsign = 0;
0 0 else if (IS_DIGIT(*ptr)) refsign = 0;
6891 0 0 if (refsign >= 0)
6893 0 0 while (IS_DIGIT(*ptr))
0 0 while (IS_DIGIT(*ptr))
6895 0 0 if (recno > INT_MAX / 10 - 1) /* Integer overflow */
6897 0 0 while (IS_DIGIT(*ptr)) ptr++;
0 0 while (IS_DIGIT(*ptr)) ptr++;
6913 0 0 if (IS_DIGIT(*ptr))
0 0 if (IS_DIGIT(*ptr))
6918 0 0 if (!MAX_255(*ptr) || (cd->ctypes[*ptr] & ctype_word) == 0)
6924 0 0 while (MAX_255(*ptr) && (cd->ctypes[*ptr] & ctype_word) != 0)
6929 0 0 if (lengthptr != NULL) skipbytes += IMM2_SIZE;
6934 0 0 if ((terminator > 0 && *ptr++ != (pcre_uchar)terminator) ||
0 0 if ((terminator > 0 && *ptr++ != (pcre_uchar)terminator) ||
0 0 if ((terminator > 0 && *ptr++ != (pcre_uchar)terminator) ||
6944 0 0 if (lengthptr != NULL) break;
6950 0 0 if (refsign >= 0)
6952 0 0 if (recno <= 0)
6957 0 0 if (refsign != 0) recno = (refsign == CHAR_MINUS)?
0 0 if (refsign != 0) recno = (refsign == CHAR_MINUS)?
6959 0 0 if (recno <= 0 || recno > cd->final_bracount)
0 0 if (recno <= 0 || recno > cd->final_bracount)
6965 0 0 if (recno > cd->top_backref) cd->top_backref = recno;
6972 0 0 for (i = 0; i < cd->names_found; i++)
6974 0 0 if (STRNCMP_UC_UC(name, slot+IMM2_SIZE, namelen) == 0 &&
0 0 if (STRNCMP_UC_UC(name, slot+IMM2_SIZE, namelen) == 0 &&
6984 0 0 if (i < cd->names_found)
6989 0 0 if (recno > cd->top_backref) cd->top_backref = recno;
6990 0 0 for (; i < cd->names_found; i++)
6993 0 0 if (STRNCMP_UC_UC(name, slot+IMM2_SIZE, namelen) != 0 ||
0 0 if (STRNCMP_UC_UC(name, slot+IMM2_SIZE, namelen) != 0 ||
6998 0 0 if (count > 1)
7017 0 0 else if (terminator != CHAR_NULL)
7026 0 0 else if (*name == CHAR_R)
7029 0 0 for (i = 1; i < namelen; i++)
7031 0 0 if (!IS_DIGIT(name[i]))
0 0 if (!IS_DIGIT(name[i]))
7036 0 0 if (recno > INT_MAX / 10 - 1) /* Integer overflow */
7043 0 0 if (recno == 0) recno = RREF_ANY;
7051 0 0 else if (namelen == 6 && STRNCMP_UC_C8(name, STRING_DEFINE, 6) == 0)
0 0 else if (namelen == 6 && STRNCMP_UC_C8(name, STRING_DEFINE, 6) == 0)
7083 0 0 if (*ptr == CHAR_RIGHT_PARENTHESIS && ptr[1] != CHAR_ASTERISK &&
0 0 if (*ptr == CHAR_RIGHT_PARENTHESIS && ptr[1] != CHAR_ASTERISK &&
0 0 if (*ptr == CHAR_RIGHT_PARENTHESIS && ptr[1] != CHAR_ASTERISK &&
7084 0 0 ptr[1] != CHAR_PLUS && ptr[1] != CHAR_QUESTION_MARK &&
0 0 ptr[1] != CHAR_PLUS && ptr[1] != CHAR_QUESTION_MARK &&
7085 0 0 (ptr[1] != CHAR_LEFT_CURLY_BRACKET || !is_counted_repeat(ptr+2)))
7113 0 0 if (MAX_255(ptr[1]) && (cd->ctypes[ptr[1]] & ctype_word) != 0)
7137 0 0 while(IS_DIGIT(*ptr))
0 0 while(IS_DIGIT(*ptr))
7139 0 0 if (*ptr != CHAR_RIGHT_PARENTHESIS)
7144 0 0 if (n > 255)
7160 0 0 if (*(++ptr) == CHAR_EQUALS_SIGN ||
0 0 if (*(++ptr) == CHAR_EQUALS_SIGN ||
7167 0 0 else if (*ptr != CHAR_LESS_THAN_SIGN) /* Test for Python-style defn */
7179 0 0 CHAR_GREATER_THAN_SIGN : CHAR_APOSTROPHE;
7181 0 0 if (IS_DIGIT(*ptr))
0 0 if (IS_DIGIT(*ptr))
7186 0 0 while (MAX_255(*ptr) && (cd->ctypes[*ptr] & ctype_word) != 0) ptr++;
7195 0 0 if (lengthptr != NULL)
7200 0 0 if (*ptr != (pcre_uchar)terminator)
7206 0 0 if (cd->names_found >= MAX_NAME_COUNT)
7212 0 0 if (namelen + IMM2_SIZE + 1 > cd->name_entry_size)
7215 0 0 if (namelen > MAX_NAME_SIZE)
7230 0 0 for (i = 0; i < cd->names_found; i++, ng++)
7232 0 0 if (namelen == ng->length &&
0 0 if (namelen == ng->length &&
7235 0 0 if (ng->number == number) break;
7236 0 0 if ((options & PCRE_DUPNAMES) == 0)
7243 0 0 else if (ng->number == number)
7250 0 0 if (i >= cd->names_found) /* Not a duplicate with same number */
7254 0 0 if (cd->names_found >= cd->named_group_list_size)
7260 0 0 if (newspace == NULL)
7268 0 0 if (cd->named_group_list_size > NAMED_GROUP_LIST_SIZE)
7299 0 0 if (IS_DIGIT(*ptr))
0 0 if (IS_DIGIT(*ptr))
7304 0 0 while (MAX_255(*ptr) && (cd->ctypes[*ptr] & ctype_word) != 0) ptr++;
7314 0 0 if (lengthptr != NULL)
7319 0 0 if (namelen == 0)
7324 0 0 if (*ptr != (pcre_uchar)terminator)
7329 0 0 if (namelen > MAX_NAME_SIZE)
7337 0 0 if (!is_recurse) cd->namedrefcount++;
7365 0 0 if (cd->dupgroups) *lengthptr += 4 + 4*LINK_SIZE;
7380 0 0 for (i = 0; i < cd->names_found; i++, ng++)
7382 0 0 if (namelen == ng->length &&
0 0 if (namelen == ng->length &&
7387 0 0 if (is_recurse) break;
7388 0 0 for (oc = cd->open_caps; oc != NULL; oc = oc->next)
7390 0 0 if (oc->number == recno)
7409 0 0 for (i = 0; i < cd->names_found; i++)
7411 0 0 if (STRNCMP_UC_UC(name, slot+IMM2_SIZE, namelen) == 0 &&
0 0 if (STRNCMP_UC_UC(name, slot+IMM2_SIZE, namelen) == 0 &&
7417 0 0 if (i < cd->names_found)
7431 0 0 if (is_recurse) goto HANDLE_RECURSION;
7436 0 0 if (lengthptr == NULL && cd->dupnames)
0 0 if (lengthptr == NULL && cd->dupnames)
7442 0 0 for (i++; i < cd->names_found; i++)
7444 0 0 if (STRCMP_UC_UC(slot + IMM2_SIZE, cslot + IMM2_SIZE) != 0) break;
7449 0 0 if (count > 1)
7451 0 0 if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE;
7454 0 0 *code++ = ((options & PCRE_CASELESS) != 0)? OP_DNREFI : OP_DNREF;
7460 0 0 for (; slot < cslot; slot += cd->name_entry_size)
7464 0 0 cd->backref_map |= (recno < 32)? (1 << recno) : 1;
7465 0 0 if (recno > cd->top_backref) cd->top_backref = recno;
7471 0 0 for (oc = cd->open_caps; oc != NULL; oc = oc->next)
7473 0 0 if (oc->number == recno)
7493 0 0 if (*(++ptr) != CHAR_RIGHT_PARENTHESIS)
7517 0 0 if ((refsign = *ptr) == CHAR_PLUS)
7520 0 0 if (!IS_DIGIT(*ptr))
0 0 if (!IS_DIGIT(*ptr))
7526 0 0 else if (refsign == CHAR_MINUS)
7528 0 0 if (!IS_DIGIT(ptr[1]))
0 0 if (!IS_DIGIT(ptr[1]))
7534 0 0 while(IS_DIGIT(*ptr))
0 0 while(IS_DIGIT(*ptr))
7536 0 0 if (recno > INT_MAX / 10 - 1) /* Integer overflow */
7538 0 0 while (IS_DIGIT(*ptr)) ptr++;
0 0 while (IS_DIGIT(*ptr)) ptr++;
7545 0 0 if (*ptr != (pcre_uchar)terminator)
7551 0 0 if (refsign == CHAR_MINUS)
7553 0 0 if (recno == 0)
7559 0 0 if (recno <= 0)
7565 0 0 else if (refsign == CHAR_PLUS)
7567 0 0 if (recno == 0)
7590 0 0 if (lengthptr == NULL)
7593 0 0 if (recno != 0)
7598 0 0 if (called == NULL)
7600 0 0 if (recno > cd->final_bracount)
7611 0 0 if (cd->hwm >= cd->start_workspace + cd->workspace_size -
7615 0 0 if (*errorcodeptr != 0) goto FAILED;
7629 0 0 else if (GET(called, 1) == 0 && cond_depth <= 0 &&
7649 0 0 if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE;
7659 0 0 while (*ptr != CHAR_RIGHT_PARENTHESIS && *ptr != CHAR_COLON)
0 0 while (*ptr != CHAR_RIGHT_PARENTHESIS && *ptr != CHAR_COLON)
7692 0 0 if (*ptr == CHAR_RIGHT_PARENTHESIS)
7720 0 6 else if ((options & PCRE_NO_AUTO_CAPTURE) != 0)
7738 0 6 if ((cd->parens_depth += 1) > PARENS_NEST_LIMIT)
7752 6 0 if (bravalue >= OP_ASSERT && bravalue <= OP_ASSERTBACK_NOT &&
0 6 if (bravalue >= OP_ASSERT && bravalue <= OP_ASSERTBACK_NOT &&
0 0 if (bravalue >= OP_ASSERT && bravalue <= OP_ASSERTBACK_NOT &&
7770 3 3 if (!compile_regex(
6 0 if (!compile_regex(
0 6 if (!compile_regex(
0 6 if (!compile_regex(
7797 0 6 if (bravalue == OP_ONCE && cd->bracount <= tempbracount)
0 0 if (bravalue == OP_ONCE && cd->bracount <= tempbracount)
7800 6 0 if (bravalue >= OP_ASSERT && bravalue <= OP_ASSERTBACK_NOT)
0 6 if (bravalue >= OP_ASSERT && bravalue <= OP_ASSERTBACK_NOT)
7812 0 6 if (bravalue == OP_COND && lengthptr == NULL)
0 0 if (bravalue == OP_COND && lengthptr == NULL)
7821 0 0 while (*tc != OP_KET);
7826 0 0 if (code[LINK_SIZE+1] == OP_DEF)
7828 0 0 if (condcount > 1)
7842 0 0 if (condcount > 2)
7847 0 0 if (condcount == 1) subfirstcharflags = subreqcharflags = REQ_NONE;
7853 0 6 if (*ptr != CHAR_RIGHT_PARENTHESIS)
7864 3 3 if (lengthptr != NULL)
7866 0 3 if (OFLOW_MAX - *lengthptr < length_prevgroup - 2 - 2*LINK_SIZE)
7886 0 3 if (bravalue == OP_DEF) break;
7901 3 0 if (bravalue >= OP_ONCE)
7909 0 3 if (firstcharflags == REQ_UNSET)
7911 0 0 if (subfirstcharflags >= 0)
7925 3 0 else if (subfirstcharflags >= 0 && subreqcharflags < 0)
0 3 else if (subfirstcharflags >= 0 && subreqcharflags < 0)
7934 3 0 if (subreqcharflags >= 0)
7950 0 0 else if (bravalue == OP_ASSERT && subreqcharflags >= 0 &&
0 0 else if (bravalue == OP_ASSERT && subreqcharflags >= 0 &&
0 0 else if (bravalue == OP_ASSERT && subreqcharflags >= 0 &&
7971 0 104 if (*errorcodeptr != 0) goto FAILED;
7973 104 0 if (escape == 0) /* The escape coded a single character */
7980 0 0 if (firstcharflags == REQ_UNSET && escape > ESC_b && escape < ESC_Z)
0 0 if (firstcharflags == REQ_UNSET && escape > ESC_b && escape < ESC_Z)
0 0 if (firstcharflags == REQ_UNSET && escape > ESC_b && escape < ESC_Z)
7997 0 0 if (escape == ESC_g)
8004 0 0 CHAR_GREATER_THAN_SIGN : CHAR_APOSTROPHE;
8017 0 0 if (cf != CHAR_PLUS && cf != CHAR_MINUS && !IS_DIGIT(cf))
0 0 if (cf != CHAR_PLUS && cf != CHAR_MINUS && !IS_DIGIT(cf))
0 0 if (cf != CHAR_PLUS && cf != CHAR_MINUS && !IS_DIGIT(cf))
0 0 if (cf != CHAR_PLUS && cf != CHAR_MINUS && !IS_DIGIT(cf))
8027 0 0 while (IS_DIGIT(*p)) p++;
0 0 while (IS_DIGIT(*p)) p++;
8028 0 0 if (*p != (pcre_uchar)terminator)
8040 0 0 if (escape == ESC_k)
8042 0 0 if ((ptr[1] != CHAR_LESS_THAN_SIGN &&
0 0 if ((ptr[1] != CHAR_LESS_THAN_SIGN &&
8043 0 0 ptr[1] != CHAR_APOSTROPHE && ptr[1] != CHAR_LEFT_CURLY_BRACKET))
8050 0 0 CHAR_GREATER_THAN_SIGN : (*ptr == CHAR_APOSTROPHE)?
8051 0 0 CHAR_APOSTROPHE : CHAR_RIGHT_CURLY_BRACKET;
8059 0 0 if (escape < 0)
8068 0 0 if (firstcharflags == REQ_UNSET) zerofirstcharflags = firstcharflags = REQ_NONE;
8071 0 0 *code++ = ((options & PCRE_CASELESS) != 0)? OP_REFI : OP_REF;
8073 0 0 cd->backref_map |= (recno < 32)? (1 << recno) : 1;
8074 0 0 if (recno > cd->top_backref) cd->top_backref = recno;
8080 0 0 for (oc = cd->open_caps; oc != NULL; oc = oc->next)
8082 0 0 if (oc->number == recno)
8110 0 0 else if (escape == ESC_X || escape == ESC_P || escape == ESC_p)
0 0 else if (escape == ESC_X || escape == ESC_P || escape == ESC_p)
0 0 else if (escape == ESC_X || escape == ESC_P || escape == ESC_p)
8125 0 0 if ((escape == ESC_b || escape == ESC_B || escape == ESC_A) &&
0 0 if ((escape == ESC_b || escape == ESC_B || escape == ESC_A) &&
0 0 if ((escape == ESC_b || escape == ESC_B || escape == ESC_A) &&
0 0 if ((escape == ESC_b || escape == ESC_B || escape == ESC_A) &&
8140 0 0 previous = (escape > ESC_b && escape < ESC_Z)? code : NULL;
0 0 previous = (escape > ESC_b && escape < ESC_Z)? code : NULL;
8142 0 0 *code++ = (!utf && escape == ESC_C)? OP_ALLANY : escape;
0 0 *code++ = (!utf && escape == ESC_C)? OP_ALLANY : escape;
8209 0 778 *code++ = ((options & PCRE_CASELESS) != 0)? OP_CHARI : OP_CHAR;
8210 778 778 for (c = 0; c < mclength; c++) *code++ = mcbuffer[c];
8214 778 0 if (mcbuffer[0] == CHAR_CR || mcbuffer[0] == CHAR_NL)
0 778 if (mcbuffer[0] == CHAR_CR || mcbuffer[0] == CHAR_NL)
8222 58 720 if (firstcharflags == REQ_UNSET)
8231 0 58 if (mclength == 1 || req_caseopt == 0)
0 0 if (mclength == 1 || req_caseopt == 0)
8236 0 58 if (mclength != 1)
8254 0 720 if (mclength == 1 || req_caseopt == 0)
0 0 if (mclength == 1 || req_caseopt == 0)
8336 0 68 if (PUBL(stack_guard) != NULL && PUBL(stack_guard)())
0 0 if (PUBL(stack_guard) != NULL && PUBL(stack_guard)())
8372 6 62 if (*code == OP_CBRA)
8394 0 68 if (reset_bracount) cd->bracount = orig_bracount;
8398 0 68 if (lookbehind)
8409 34 34 if (!compile_branch(&options, &code, &ptr, errorcodeptr, &branchfirstchar,
0 68 if (!compile_branch(&options, &code, &ptr, errorcodeptr, &branchfirstchar,
8420 6 62 if (cd->bracount > max_bracount) max_bracount = cd->bracount;
8424 34 34 if (lengthptr == NULL)
8429 34 0 if (*last_branch != OP_ALT)
8448 0 0 if (firstcharflags >= 0 &&
0 0 if (firstcharflags >= 0 &&
8449 0 0 (firstcharflags != branchfirstcharflags || firstchar != branchfirstchar))
8451 0 0 if (reqcharflags < 0)
8462 0 0 if (firstcharflags < 0 && branchfirstcharflags >= 0 && branchreqcharflags < 0)
0 0 if (firstcharflags < 0 && branchfirstcharflags >= 0 && branchreqcharflags < 0)
0 0 if (firstcharflags < 0 && branchfirstcharflags >= 0 && branchreqcharflags < 0)
8470 0 0 if (((reqcharflags & ~REQ_VARY) != (branchreqcharflags & ~REQ_VARY)) ||
0 0 if (((reqcharflags & ~REQ_VARY) != (branchreqcharflags & ~REQ_VARY)) ||
8488 0 34 if (lookbehind)
8495 0 0 if (fixed_length == -3)
8499 0 0 else if (fixed_length < 0)
8501 0 0 *errorcodeptr = (fixed_length == -2)? ERR36 :
8502 0 0 (fixed_length == -4)? ERR70: ERR25;
8508 0 0 if (fixed_length > cd->max_lookbehind)
8522 68 0 if (*ptr != CHAR_VERTICAL_LINE)
8524 34 34 if (lengthptr == NULL)
8534 0 34 while (branch_length > 0);
8548 6 62 if (capnumber > 0)
8550 0 6 if (cd->open_caps->flag)
8580 34 34 if (lengthptr != NULL)
8582 0 34 if (OFLOW_MAX - *lengthptr < length)
8601 0 0 if (lengthptr != NULL)
8674 31 0 if (op == OP_BRA || op == OP_BRAPOS ||
31 0 if (op == OP_BRA || op == OP_BRAPOS ||
31 0 if (op == OP_BRA || op == OP_BRAPOS ||
8675 0 31 op == OP_SBRA || op == OP_SBRAPOS)
8677 0 0 if (!is_anchored(scode, bracket_map, cd, atomcount)) return FALSE;
8682 31 0 else if (op == OP_CBRA || op == OP_CBRAPOS ||
31 0 else if (op == OP_CBRA || op == OP_CBRAPOS ||
31 0 else if (op == OP_CBRA || op == OP_CBRAPOS ||
8683 0 31 op == OP_SCBRA || op == OP_SCBRAPOS)
8686 0 0 int new_map = bracket_map | ((n < 32)? (1 << n) : 1);
8687 0 0 if (!is_anchored(scode, new_map, cd, atomcount)) return FALSE;
8692 31 0 else if (op == OP_ASSERT || op == OP_COND)
0 31 else if (op == OP_ASSERT || op == OP_COND)
8694 0 0 if (!is_anchored(scode, bracket_map, cd, atomcount)) return FALSE;
8699 31 0 else if (op == OP_ONCE || op == OP_ONCE_NC)
0 31 else if (op == OP_ONCE || op == OP_ONCE_NC)
8701 0 0 if (!is_anchored(scode, bracket_map, cd, atomcount + 1))
8709 31 0 else if ((op == OP_TYPESTAR || op == OP_TYPEMINSTAR ||
31 0 else if ((op == OP_TYPESTAR || op == OP_TYPEMINSTAR ||
0 31 else if ((op == OP_TYPESTAR || op == OP_TYPEMINSTAR ||
8712 0 0 if (scode[1] != OP_ALLANY || (bracket_map & cd->backref_map) != 0 ||
0 0 if (scode[1] != OP_ALLANY || (bracket_map & cd->backref_map) != 0 ||
0 0 if (scode[1] != OP_ALLANY || (bracket_map & cd->backref_map) != 0 ||
8713 0 0 atomcount > 0 || cd->had_pruneorskip)
8719 31 0 else if (op != OP_SOD && op != OP_SOM && op != OP_CIRC) return FALSE;
31 0 else if (op != OP_SOD && op != OP_SOM && op != OP_CIRC) return FALSE;
26 5 else if (op != OP_SOD && op != OP_SOM && op != OP_CIRC) return FALSE;
8723 0 5 while (*code == OP_ALT); /* Loop for each alternative */
8768 0 3 if (op == OP_COND)
8771 0 0 if (*scode == OP_CALLOUT) scode += PRIV(OP_lengths)[OP_CALLOUT];
8772 0 0 switch (*scode)
8783 0 0 if (!is_startline(scode, bracket_map, cd, atomcount, TRUE)) return FALSE;
8784 0 0 do scode += GET(scode, 1); while (*scode == OP_ALT);
8794 3 0 if (op == OP_BRA || op == OP_BRAPOS ||
3 0 if (op == OP_BRA || op == OP_BRAPOS ||
3 0 if (op == OP_BRA || op == OP_BRAPOS ||
8795 0 3 op == OP_SBRA || op == OP_SBRAPOS)
8797 0 0 if (!is_startline(scode, bracket_map, cd, atomcount, inassert)) return FALSE;
8802 3 0 else if (op == OP_CBRA || op == OP_CBRAPOS ||
3 0 else if (op == OP_CBRA || op == OP_CBRAPOS ||
3 0 else if (op == OP_CBRA || op == OP_CBRAPOS ||
8803 0 3 op == OP_SCBRA || op == OP_SCBRAPOS)
8806 0 0 int new_map = bracket_map | ((n < 32)? (1 << n) : 1);
8807 0 0 if (!is_startline(scode, new_map, cd, atomcount, inassert)) return FALSE;
8812 0 3 else if (op == OP_ASSERT)
8814 0 0 if (!is_startline(scode, bracket_map, cd, atomcount, TRUE)) return FALSE;
8819 3 0 else if (op == OP_ONCE || op == OP_ONCE_NC)
0 3 else if (op == OP_ONCE || op == OP_ONCE_NC)
8821 0 0 if (!is_startline(scode, bracket_map, cd, atomcount + 1, inassert)) return FALSE;
8830 3 0 else if (op == OP_TYPESTAR || op == OP_TYPEMINSTAR || op == OP_TYPEPOSSTAR)
3 0 else if (op == OP_TYPESTAR || op == OP_TYPEMINSTAR || op == OP_TYPEPOSSTAR)
0 3 else if (op == OP_TYPESTAR || op == OP_TYPEMINSTAR || op == OP_TYPEPOSSTAR)
8832 0 0 if (scode[1] != OP_ANY || (bracket_map & cd->backref_map) != 0 ||
0 0 if (scode[1] != OP_ANY || (bracket_map & cd->backref_map) != 0 ||
0 0 if (scode[1] != OP_ANY || (bracket_map & cd->backref_map) != 0 ||
8833 0 0 atomcount > 0 || cd->had_pruneorskip || inassert)
0 0 atomcount > 0 || cd->had_pruneorskip || inassert)
8842 3 0 else if (op != OP_CIRC && op != OP_CIRCM) return FALSE;
3 0 else if (op != OP_CIRC && op != OP_CIRCM) return FALSE;
8848 0 0 while (*code == OP_ALT); /* Loop for each alternative */
8886 3 0 int xl = (*code == OP_CBRA || *code == OP_SCBRA ||
3 0 int xl = (*code == OP_CBRA || *code == OP_SCBRA ||
8887 3 0 *code == OP_CBRAPOS || *code == OP_SCBRAPOS)? IMM2_SIZE:0;
0 3 *code == OP_CBRAPOS || *code == OP_SCBRAPOS)? IMM2_SIZE:0;
8907 0 0 if (dflags < 0)
8909 0 0 if (cflags < 0) { c = d; cflags = dflags; } else if (c != d || cflags != dflags) return 0;
0 0 if (cflags < 0) { c = d; cflags = dflags; } else if (c != d || cflags != dflags) return 0;
0 0 if (cflags < 0) { c = d; cflags = dflags; } else if (c != d || cflags != dflags) return 0;
8920 0 0 if (!inassert) return 0;
8921 0 0 if (cflags < 0) { c = scode[1]; cflags = 0; }
8922 0 0 else if (c != scode[1]) return 0;
8933 0 0 if (!inassert) return 0;
8934 0 0 if (cflags < 0) { c = scode[1]; cflags = REQ_CASELESS; }
8935 0 0 else if (c != scode[1]) return 0;
8941 0 0 while (*code == OP_ALT);
8973 0 0 for (i = 0; i < cd->names_found; i++)
8976 0 0 if (crc == 0 && slot[IMM2_SIZE+length] != 0)
0 0 if (crc == 0 && slot[IMM2_SIZE+length] != 0)
8984 0 0 if (crc < 0)
9104 0 31 if (errorptr == NULL)
9106 0 0 if (errorcodeptr != NULL) *errorcodeptr = 99;
9111 0 31 if (errorcodeptr != NULL) *errorcodeptr = ERR0;
9115 0 31 if (erroroffset == NULL)
9125 31 0 if (tables == NULL) tables = PRIV(default_tables);
9133 0 31 if ((options & ~PUBLIC_COMPILE_OPTIONS) != 0)
9141 0 31 if ((options & PCRE_NEVER_UTF) != 0) never_utf = TRUE;
9148 0 31 while (ptr[skipatstart] == CHAR_LEFT_PARENTHESIS &&
0 0 while (ptr[skipatstart] == CHAR_LEFT_PARENTHESIS &&
9159 0 0 if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_UTF8_RIGHTPAR, 5) == 0)
9171 0 0 else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_UTF_RIGHTPAR, 4) == 0)
9173 0 0 else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_UCP_RIGHTPAR, 4) == 0)
9175 0 0 else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_NO_AUTO_POSSESS_RIGHTPAR, 16) == 0)
9177 0 0 else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_NO_START_OPT_RIGHTPAR, 13) == 0)
9180 0 0 else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_LIMIT_MATCH_EQ, 12) == 0)
9184 0 0 while (isdigit(ptr[p]))
9186 0 0 if (c > PCRE_UINT32_MAX / 10 - 1) break; /* Integer overflow */
9189 0 0 if (ptr[p++] != CHAR_RIGHT_PARENTHESIS) break;
9190 0 0 if (c < limit_match)
9199 0 0 else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_LIMIT_RECURSION_EQ, 16) == 0)
9203 0 0 while (isdigit(ptr[p]))
9205 0 0 if (c > PCRE_UINT32_MAX / 10 - 1) break; /* Integer overflow check */
9208 0 0 if (ptr[p++] != CHAR_RIGHT_PARENTHESIS) break;
9209 0 0 if (c < limit_recursion)
9218 0 0 if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_CR_RIGHTPAR, 3) == 0)
9220 0 0 else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_LF_RIGHTPAR, 3) == 0)
9222 0 0 else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_CRLF_RIGHTPAR, 5) == 0)
9224 0 0 else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_ANY_RIGHTPAR, 4) == 0)
9226 0 0 else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_ANYCRLF_RIGHTPAR, 8) == 0)
9229 0 0 else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_BSR_ANYCRLF_RIGHTPAR, 12) == 0)
9231 0 0 else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_BSR_UNICODE_RIGHTPAR, 12) == 0)
9234 0 0 if (newnl != 0)
9236 0 0 else if (newbsr != 0)
9243 0 31 if (utf && never_utf)
0 0 if (utf && never_utf)
9268 0 31 if (utf)
9278 0 31 if ((options & PCRE_UCP) != 0)
9287 0 31 if ((options & (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE)) ==
9310 31 0 if (newline == -2)
9314 0 0 else if (newline < 0)
9321 0 0 if (newline > 255)
9392 0 31 if (errorcode != 0) goto PCRE_EARLY_ERROR_RETURN;
9397 0 31 if (length > MAX_PATTERN_SIZE)
9413 0 31 if (re == NULL)
9437 0 31 re->tables = (tables == PRIV(default_tables))? NULL : tables;
9471 0 31 if (cd->names_found > 0)
9476 0 0 for (; i > 0; i--, ng++)
9478 0 0 if (cd->named_group_list_size > NAMED_GROUP_LIST_SIZE)
9496 0 31 if (cd->had_accept)
9504 31 0 if (errorcode == 0 && *ptr != CHAR_NULL) errorcode = ERR22;
0 31 if (errorcode == 0 && *ptr != CHAR_NULL) errorcode = ERR22;
9512 0 31 if (code - codestart > length) errorcode = ERR23;
9525 0 31 if (cd->hwm > cd->start_workspace)
9529 0 0 while (errorcode == 0 && cd->hwm > cd->start_workspace)
0 0 while (errorcode == 0 && cd->hwm > cd->start_workspace)
9538 0 0 if (offset == 0 || codestart[offset-1] != OP_RECURSE)
0 0 if (offset == 0 || codestart[offset-1] != OP_RECURSE)
9545 0 0 if (recno != prev_recno)
9550 0 0 if (groupptr == NULL) errorcode = ERR53;
9558 0 31 if (cd->workspace_size > COMPILE_WORK_SIZE)
9565 31 0 if (errorcode == 0 && re->top_backref > re->top_bracket) errorcode = ERR15;
0 31 if (errorcode == 0 && re->top_backref > re->top_bracket) errorcode = ERR15;
9574 31 0 if (errorcode == 0 && (options & PCRE_NO_AUTO_POSSESS) == 0)
31 0 if (errorcode == 0 && (options & PCRE_NO_AUTO_POSSESS) == 0)
9588 31 0 if (errorcode == 0 && cd->check_lookbehind)
0 31 if (errorcode == 0 && cd->check_lookbehind)
9597 0 0 for (cc = (pcre_uchar *)PRIV(find_bracket)(codestart, utf, -1);
9601 0 0 if (GET(cc, 1) == 0)
9611 0 0 if (fixed_length < 0)
9613 0 0 errorcode = (fixed_length == -2)? ERR36 :
9614 0 0 (fixed_length == -4)? ERR70 : ERR25;
9617 0 0 if (fixed_length > cd->max_lookbehind) cd->max_lookbehind = fixed_length;
9626 0 31 if (errorcode != 0)
9633 0 0 if (errorcodeptr != NULL) *errorcodeptr = errorcode;
9648 31 0 if ((re->options & PCRE_ANCHORED) == 0)
9650 5 26 if (is_anchored(codestart, 0, cd, 0)) re->options |= PCRE_ANCHORED;
9653 3 23 if (firstcharflags < 0)
9655 23 3 if (firstcharflags >= 0) /* Remove caseless flag for non-caseable chars */
9664 0 23 if ((firstcharflags & REQ_CASELESS) != 0)
9680 0 0 if (MAX_255(re->first_char)
9688 0 3 else if (is_startline(codestart, 0, cd, 0, FALSE)) re->flags |= PCRE_STARTLINE;
9696 26 5 if (reqcharflags >= 0 &&
3 23 if (reqcharflags >= 0 &&
9697 3 0 ((re->options & PCRE_ANCHORED) == 0 || (reqcharflags & REQ_VARY) != 0))
9706 0 26 if ((reqcharflags & REQ_CASELESS) != 0)
9722 0 0 if (MAX_255(re->req_char) && cd->fcc[re->req_char] != re->req_char)
9782 5 26 if (could_be_empty_branch(codestart, code, utf, cd, NULL))
9789 0 26 while (*codestart == OP_ALT);