Branch Coverage

regcomp.c
Criterion Covered Total %
branch 289 1302 22.2


line true false branch
239 0 0 if (!ret)
282 0 0 if (dfa->init_state != dfa->init_state_word)
284 0 0 if (dfa->init_state != dfa->init_state_nl)
286 0 0 if (dfa->init_state != dfa->init_state_begbuf)
300 0 0 if (icase)
0 0 if (icase)
0 0 if (icase)
0 0 if (icase)
0 0 if (icase)
0 0 if (icase)
313 0 0 bool icase = (dfa->mb_cur_max == 1 && (bufp->syntax & RE_ICASE));
0 0 bool icase = (dfa->mb_cur_max == 1 && (bufp->syntax & RE_ICASE));
314 0 0 for (node_cnt = 0; node_cnt < init_state->nodes.nelem; ++node_cnt)
319 0 0 if (type == CHARACTER)
323 0 0 if ((bufp->syntax & RE_ICASE) && dfa->mb_cur_max > 1)
0 0 if ((bufp->syntax & RE_ICASE) && dfa->mb_cur_max > 1)
332 0 0 while (++node < dfa->nodes_len
333 0 0 && dfa->nodes[node].type == CHARACTER
334 0 0 && dfa->nodes[node].mb_partial)
337 0 0 if (rpl__mbrtowc (&wc, (const char *) buf, p - buf,
339 0 0 && (rpl__wcrtomb ((char *) buf, rpl__towlower (wc), &state)
345 0 0 else if (type == SIMPLE_BRACKET)
348 0 0 for (i = 0, ch = 0; i < BITSET_WORDS; ++i)
352 0 0 for (j = 0; j < BITSET_WORD_BITS; ++j, ++ch)
353 0 0 if (w & ((bitset_word_t) 1 << j))
358 0 0 else if (type == COMPLEX_BRACKET)
387 0 0 if (dfa->mb_cur_max > 1
388 0 0 && (cset->nchar_classes || cset->non_match || cset->nranges
0 0 && (cset->nchar_classes || cset->non_match || cset->nranges
0 0 && (cset->nchar_classes || cset->non_match || cset->nranges
390 0 0 || cset->nequiv_classes
399 0 0 if (rpl__mbrtowc (NULL, (char *) &c, 1, &mbs) == (size_t) -2)
402 0 0 while (++c != 0);
408 0 0 for (i = 0; i < cset->nmbchars; ++i)
413 0 0 if (rpl__wcrtomb (buf, cset->mbchars[i], &state) != (size_t) -1)
415 0 0 if ((bufp->syntax & RE_ICASE) && dfa->mb_cur_max > 1)
0 0 if ((bufp->syntax & RE_ICASE) && dfa->mb_cur_max > 1)
417 0 0 if (rpl__wcrtomb (buf, rpl__towlower (cset->mbchars[i]), &state)
425 0 0 else if (type == OP_PERIOD
427 0 0 || type == OP_UTF8_PERIOD
429 0 0 || type == END_OF_RE)
432 0 0 if (type == END_OF_RE)
480 0 0 : RE_SYNTAX_POSIX_BASIC);
488 0 0 if (BE (preg->fastmap == NULL, 0))
491 0 0 syntax |= (cflags & REG_ICASE) ? RE_ICASE : 0;
494 0 0 if (cflags & REG_NEWLINE)
510 0 0 if (ret == REG_ERPAREN)
514 0 0 if (BE (ret == REG_NOERROR, 1))
521 0 0 re_free (preg->fastmap);
540 0 0 if (BE (errcode < 0
0 0 if (BE (errcode < 0
553 0 0 if (BE (errbuf_size != 0, 1))
556 0 0 if (BE (msg_size > errbuf_size, 0))
605 6 0 if (dfa->nodes)
606 48 6 for (i = 0; i < dfa->nodes_len; ++i)
608 6 0 re_free (dfa->nexts);
609 48 6 for (i = 0; i < dfa->nodes_len; ++i)
611 48 0 if (dfa->eclosures != NULL)
612 48 0 re_node_set_free (dfa->eclosures + i);
613 15 33 if (dfa->inveclosures != NULL)
614 15 0 re_node_set_free (dfa->inveclosures + i);
615 48 0 if (dfa->edests != NULL)
616 14 34 re_node_set_free (dfa->edests + i);
618 6 0 re_free (dfa->edests);
619 6 0 re_free (dfa->eclosures);
620 2 4 re_free (dfa->inveclosures);
621 6 0 re_free (dfa->nodes);
623 6 0 if (dfa->state_table)
624 96 6 for (i = 0; i <= dfa->state_hash_mask; ++i)
627 30 96 for (j = 0; j < entry->num; ++j)
632 27 69 re_free (entry->array);
634 6 0 re_free (dfa->state_table);
636 6 0 if (dfa->sb_char != utf8_sb_map)
637 6 0 re_free (dfa->sb_char);
639 0 6 re_free (dfa->subexp_map);
644 6 0 re_free (dfa);
654 6 0 if (BE (dfa != NULL, 1))
662 0 6 re_free (preg->fastmap);
665 0 6 re_free (preg->translate);
765 6 0 if (BE (preg->allocated < sizeof (re_dfa_t), 0))
771 6 0 if (preg->buffer == NULL) {
784 0 6 if (BE (err != REG_NOERROR, 0))
799 0 6 if (BE (err != REG_NOERROR, 0))
814 0 6 if (BE (dfa->str_tree == NULL, 0))
819 0 6 if (BE (err != REG_NOERROR, 0))
824 0 6 if (dfa->is_utf8 && !(syntax & RE_ICASE) && preg->translate == NULL)
0 0 if (dfa->is_utf8 && !(syntax & RE_ICASE) && preg->translate == NULL)
0 0 if (dfa->is_utf8 && !(syntax & RE_ICASE) && preg->translate == NULL)
835 0 6 if (BE (err != REG_NOERROR, 0))
864 0 6 MAX (sizeof (struct re_state_table_entry),
0 0 MAX (sizeof (struct re_state_table_entry),
0 6 MAX (sizeof (struct re_state_table_entry),
879 0 6 if (BE (MIN (IDX_MAX, SIZE_MAX / max_object_size) / 2 <= pat_len, 0))
883 0 6 re_malloc (dfa->nodes, re_token_t, dfa->nodes_alloc);
887 6 24 if (table_size > pat_len)
890 0 6 re_calloc(dfa->state_table, struct re_state_table_entry, table_size);
920 6 0 if (dfa->mb_cur_max > 1)
922 0 6 if (dfa->is_utf8)
930 0 6 if (BE (dfa->sb_char == NULL, 0))
934 24 6 for (i = 0, ch = 0; i < BITSET_WORDS; ++i)
935 1536 24 for (j = 0; j < BITSET_WORD_BITS; ++j, ++ch)
938 768 768 if (wch != rpl__WEOF)
941 768 768 if (rpl__isascii (ch) && wch != ch)
0 768 if (rpl__isascii (ch) && wch != ch)
949 6 0 if (BE (dfa->nodes == NULL || dfa->state_table == NULL, 0))
0 6 if (BE (dfa->nodes == NULL || dfa->state_table == NULL, 0))
966 0 0 if (BE (dfa->map_notascii == 0, 1))
990 0 0 if (BE (dfa->is_utf8, 1))
998 0 0 for (; i < BITSET_WORDS; ++i)
999 0 0 for (j = 0; j < BITSET_WORD_BITS; ++j, ++ch)
1000 0 0 if (rpl__isalnum (ch) || ch == '_')
0 0 if (rpl__isalnum (ch) || ch == '_')
1011 8 6 for (storage = dfa->str_tree_storage; storage; storage = next)
1014 8 0 re_free (storage);
1019 6 0 re_free (dfa->org_indices);
1037 0 6 if (BE (err != REG_NOERROR, 0))
1044 0 6 if (dfa->nbackref > 0)
1045 0 0 for (i = 0; i < init_nodes.nelem; ++i)
1051 0 0 if (type != OP_BACK_REF)
1053 0 0 for (clexp_idx = 0; clexp_idx < init_nodes.nelem; ++clexp_idx)
1057 0 0 if (clexp_node->type == OP_CLOSE_SUBEXP
1058 0 0 && clexp_node->opr.idx == dfa->nodes[node_idx].opr.idx)
1061 0 0 if (clexp_idx == init_nodes.nelem)
1064 0 0 if (type == OP_BACK_REF)
1067 0 0 if (!re_node_set_contains (aTHX_ &init_nodes, dest_idx))
1071 0 0 if (merge_err != REG_NOERROR)
1081 0 6 if (BE (dfa->init_state == NULL, 0))
1083 0 6 if (dfa->init_state->has_constraint)
1093 0 0 if (BE (dfa->init_state_word == NULL || dfa->init_state_nl == NULL
0 0 if (BE (dfa->init_state_word == NULL || dfa->init_state_nl == NULL
0 0 if (BE (dfa->init_state_word == NULL || dfa->init_state_nl == NULL
0 0 if (BE (dfa->init_state_word == NULL || dfa->init_state_nl == NULL
1101 6 0 re_node_set_free (&init_nodes);
1118 0 0 for (node = 0; node < dfa->nodes_len; ++node)
1122 0 0 if (dfa->nodes[node].opr.c >= ASCII_CHARS)
1126 0 0 switch (dfa->nodes[node].opr.ctx_type)
1158 0 0 for (i = ASCII_CHARS / BITSET_WORD_BITS; i < BITSET_WORDS; ++i)
1160 0 0 if (dfa->nodes[node].opr.sbcset[i] >> rshift != 0)
1170 0 0 if (mb_chars || has_period)
0 0 if (mb_chars || has_period)
1171 0 0 for (node = 0; node < dfa->nodes_len; ++node)
1173 0 0 if (dfa->nodes[node].type == CHARACTER
1174 0 0 && dfa->nodes[node].opr.c >= ASCII_CHARS)
1176 0 0 else if (dfa->nodes[node].type == OP_PERIOD)
1183 0 0 dfa->has_mb_node = dfa->nbackref > 0 || has_period;
0 0 dfa->has_mb_node = dfa->nbackref > 0 || has_period;
1197 0 6 re_malloc (dfa->nexts, Idx, dfa->nodes_alloc);
1198 0 6 re_malloc (dfa->org_indices, Idx, dfa->nodes_alloc);
1199 0 6 re_malloc (dfa->edests, re_node_set, dfa->nodes_alloc);
1200 0 6 re_malloc (dfa->eclosures, re_node_set, dfa->nodes_alloc);
1201 5 1 if (preg->re_nsub > 0) {
1202 0 5 re_malloc (dfa->subexp_map, Idx, preg->re_nsub);
1206 5 1 if (dfa->subexp_map != NULL)
1209 6 5 for (i = 0; i < preg->re_nsub; i++)
1212 6 5 for (i = 0; i < preg->re_nsub; i++)
1213 0 6 if (dfa->subexp_map[i] != i)
1215 5 0 if (i == preg->re_nsub)
1217 5 0 re_free (dfa->subexp_map);
1223 0 6 if (BE (ret != REG_NOERROR, 0))
1226 0 6 if (BE (ret != REG_NOERROR, 0))
1230 0 6 if (BE (ret != REG_NOERROR, 0))
1233 0 6 if (BE (ret != REG_NOERROR, 0))
1238 6 0 if ((!preg->no_sub && preg->re_nsub > 0 && dfa->has_plural_match)
5 1 if ((!preg->no_sub && preg->re_nsub > 0 && dfa->has_plural_match)
3 2 if ((!preg->no_sub && preg->re_nsub > 0 && dfa->has_plural_match)
1239 0 4 || dfa->nbackref)
1241 0 2 re_malloc (dfa->inveclosures, re_node_set, dfa->nodes_len);
1261 74 80 while (node->left || node->right)
0 80 while (node->left || node->right)
1262 74 0 if (node->left)
1270 0 154 if (BE (err != REG_NOERROR, 0))
1272 12 142 if (node->parent == NULL)
1278 68 74 while (node->right == prev || node->right == NULL);
6 68 while (node->right == prev || node->right == NULL);
1292 0 217 if (BE (err != REG_NOERROR, 0))
1296 103 114 if (node->left)
1301 211 103 while (node->right == prev || node->right == NULL)
6 97 while (node->right == prev || node->right == NULL)
1305 17 200 if (!node)
1321 0 45 if (node->token.type == OP_BACK_REF && dfa->subexp_map)
0 0 if (node->token.type == OP_BACK_REF && dfa->subexp_map)
1328 6 39 else if (node->token.type == SUBEXP
1329 6 0 && node->left && node->left->token.type == SUBEXP)
0 6 && node->left && node->left->token.type == SUBEXP)
1334 0 0 if (node->left)
1338 0 0 if (other_idx < BITSET_WORD_BITS)
1353 34 34 if (node->left && node->left->token.type == SUBEXP)
5 29 if (node->left && node->left->token.type == SUBEXP)
1356 5 0 if (node->left)
1359 28 40 if (node->right && node->right->token.type == SUBEXP)
1 27 if (node->right && node->right->token.type == SUBEXP)
1362 1 0 if (node->right)
1376 0 6 if (preg->no_sub
1381 0 0 && node->left != NULL
1382 0 0 && (node->token.opr.idx >= BITSET_WORD_BITS
1383 0 0 || !(dfa->used_bkref_map
1391 6 0 tree1 = body ? create_tree (aTHX_ dfa, body, cls, CONCAT) : cls;
1393 6 0 if (BE (tree == NULL || tree1 == NULL || op == NULL || cls == NULL, 0))
0 6 if (BE (tree == NULL || tree1 == NULL || op == NULL || cls == NULL, 0))
6 0 if (BE (tree == NULL || tree1 == NULL || op == NULL || cls == NULL, 0))
0 6 if (BE (tree == NULL || tree1 == NULL || op == NULL || cls == NULL, 0))
6 0 if (BE (tree == NULL || tree1 == NULL || op == NULL || cls == NULL, 0))
0 6 if (BE (tree == NULL || tree1 == NULL || op == NULL || cls == NULL, 0))
1410 38 48 if (node->token.type == CONCAT)
1419 0 48 if (BE (node->node_idx == REG_MISSING, 0))
1421 0 48 if (node->token.type == ANCHOR)
1441 2 46 if (node->left)
1443 2 46 if (node->right)
1472 2 0 if (node->left != NULL)
1476 2 0 if (node->right != NULL)
1494 0 0 if (node->token.type == OP_BACK_REF)
1522 0 0 if (dfa->nodes[org_node].type == OP_BACK_REF)
1531 0 0 if (BE (clone_dest == REG_MISSING, 0))
1535 0 0 if (BE (! ok, 0))
1538 0 0 else if (dfa->edests[org_node].nelem == 0)
1546 0 0 else if (dfa->edests[org_node].nelem == 1)
1554 0 0 if (org_node == root_node && clone_node != org_node)
0 0 if (org_node == root_node && clone_node != org_node)
1557 0 0 if (BE (! ok, 0))
1564 0 0 if (BE (clone_dest == REG_MISSING, 0))
1567 0 0 if (BE (! ok, 0))
1578 0 0 if (clone_dest == REG_MISSING)
1583 0 0 if (BE (clone_dest == REG_MISSING, 0))
1586 0 0 if (BE (! ok, 0))
1590 0 0 if (BE (err != REG_NOERROR, 0))
1598 0 0 if (BE (! ok, 0))
1604 0 0 if (BE (clone_dest == REG_MISSING, 0))
1607 0 0 if (BE (! ok, 0))
1624 0 0 for (idx = dfa->nodes_len - 1; dfa->nodes[idx].duplicated && idx > 0; --idx)
0 0 for (idx = dfa->nodes_len - 1; dfa->nodes[idx].duplicated && idx > 0; --idx)
1626 0 0 if (org_node == dfa->org_indices[idx]
1627 0 0 && constraint == dfa->nodes[idx].constraint)
1641 0 0 if (BE (dup_idx != REG_MISSING, 1))
1658 15 2 for (idx = 0; idx < dfa->nodes_len; ++idx)
1661 15 2 for (src = 0; src < dfa->nodes_len; ++src)
1664 30 15 for (idx = 0; idx < dfa->eclosures[src].nelem; ++idx)
1667 0 30 if (BE (! ok, 0))
1691 6 48 if (node_idx == dfa->nodes_len)
1693 6 0 if (!incomplete)
1704 16 32 if (dfa->eclosures[node_idx].nelem != 0)
1708 0 32 if (BE (err != REG_NOERROR, 0))
1711 0 32 if (dfa->eclosures[node_idx].nelem == 0)
1714 0 0 re_node_set_free (&eclosure_elem);
1731 0 48 if (BE (err != REG_NOERROR, 0))
1740 0 48 if (dfa->nodes[node].constraint
1741 0 0 && dfa->edests[node].nelem
1742 0 0 && !dfa->nodes[dfa->edests[node].elems[0]].duplicated)
1746 0 0 if (BE (err != REG_NOERROR, 0))
1751 14 34 if (IS_EPSILON_NODE(dfa->nodes[node].type))
1752 16 14 for (i = 0; i < dfa->edests[node].nelem; ++i)
1758 0 16 if (dfa->eclosures[edest].nelem == REG_MISSING)
1765 16 0 if (dfa->eclosures[edest].nelem == 0)
1768 0 16 if (BE (err != REG_NOERROR, 0))
1775 0 16 if (BE (err != REG_NOERROR, 0))
1779 0 16 if (dfa->eclosures[edest].nelem == 0)
1782 0 0 re_node_set_free (&eclosure_elem);
1788 0 48 if (BE (! ok, 0))
1790 0 48 if (incomplete && !root)
0 0 if (incomplete && !root)
1819 6 38 if (re_string_eoi (input))
1831 38 0 if (input->mb_cur_max > 1 &&
38 0 if (input->mb_cur_max > 1 &&
1832 0 38 !re_string_first_byte (input, re_string_cur_idx (input)))
1839 12 26 if (c == '\\')
1842 0 12 if (re_string_cur_idx (input) + 1 >= re_string_length (aTHX_ input))
1852 12 0 if (input->mb_cur_max > 1)
1856 12 0 token->word_char = IS_WIDE_WORD_CHAR (wc) != 0;
0 12 token->word_char = IS_WIDE_WORD_CHAR (wc) != 0;
1860 0 0 token->word_char = IS_WORD_CHAR (c2) != 0;
0 0 token->word_char = IS_WORD_CHAR (c2) != 0;
1865 0 0 if (!(syntax & RE_LIMITED_OPS) && !(syntax & RE_NO_BK_VBAR))
0 0 if (!(syntax & RE_LIMITED_OPS) && !(syntax & RE_NO_BK_VBAR))
1870 0 0 if (!(syntax & RE_NO_BK_REFS))
1877 0 0 if (!(syntax & RE_NO_GNU_OPS))
1884 0 0 if (!(syntax & RE_NO_GNU_OPS))
1891 0 0 if (!(syntax & RE_NO_GNU_OPS))
1898 0 0 if (!(syntax & RE_NO_GNU_OPS))
1905 0 0 if (!(syntax & RE_NO_GNU_OPS))
1909 0 0 if (!(syntax & RE_NO_GNU_OPS))
1913 0 0 if (!(syntax & RE_NO_GNU_OPS))
1917 0 0 if (!(syntax & RE_NO_GNU_OPS))
1921 0 0 if (!(syntax & RE_NO_GNU_OPS))
1928 0 0 if (!(syntax & RE_NO_GNU_OPS))
1935 6 0 if (!(syntax & RE_NO_BK_PARENS))
1939 6 0 if (!(syntax & RE_NO_BK_PARENS))
1943 0 0 if (!(syntax & RE_LIMITED_OPS) && (syntax & RE_BK_PLUS_QM))
0 0 if (!(syntax & RE_LIMITED_OPS) && (syntax & RE_BK_PLUS_QM))
1947 0 0 if (!(syntax & RE_LIMITED_OPS) && (syntax & RE_BK_PLUS_QM))
0 0 if (!(syntax & RE_LIMITED_OPS) && (syntax & RE_BK_PLUS_QM))
1951 0 0 if ((syntax & RE_INTERVALS) && (!(syntax & RE_NO_BK_BRACES)))
0 0 if ((syntax & RE_INTERVALS) && (!(syntax & RE_NO_BK_BRACES)))
1955 0 0 if ((syntax & RE_INTERVALS) && (!(syntax & RE_NO_BK_BRACES)))
0 0 if ((syntax & RE_INTERVALS) && (!(syntax & RE_NO_BK_BRACES)))
1966 26 0 if (input->mb_cur_max > 1)
1969 3 23 token->word_char = IS_WIDE_WORD_CHAR (wc) != 0;
0 3 token->word_char = IS_WIDE_WORD_CHAR (wc) != 0;
1973 0 0 token->word_char = IS_WORD_CHAR (token->opr.c);
0 0 token->word_char = IS_WORD_CHAR (token->opr.c);
1978 0 0 if (syntax & RE_NEWLINE_ALT)
1982 0 0 if (!(syntax & RE_LIMITED_OPS) && (syntax & RE_NO_BK_VBAR))
0 0 if (!(syntax & RE_LIMITED_OPS) && (syntax & RE_NO_BK_VBAR))
1989 0 0 if (!(syntax & RE_LIMITED_OPS) && !(syntax & RE_BK_PLUS_QM))
0 0 if (!(syntax & RE_LIMITED_OPS) && !(syntax & RE_BK_PLUS_QM))
1993 0 0 if (!(syntax & RE_LIMITED_OPS) && !(syntax & RE_BK_PLUS_QM))
0 0 if (!(syntax & RE_LIMITED_OPS) && !(syntax & RE_BK_PLUS_QM))
1997 0 0 if ((syntax & RE_INTERVALS) && (syntax & RE_NO_BK_BRACES))
0 0 if ((syntax & RE_INTERVALS) && (syntax & RE_NO_BK_BRACES))
2001 0 0 if ((syntax & RE_INTERVALS) && (syntax & RE_NO_BK_BRACES))
0 0 if ((syntax & RE_INTERVALS) && (syntax & RE_NO_BK_BRACES))
2005 0 0 if (syntax & RE_NO_BK_PARENS)
2009 0 0 if (syntax & RE_NO_BK_PARENS)
2019 0 0 if (!(syntax & (RE_CONTEXT_INDEP_ANCHORS | RE_CARET_ANCHORS_HERE)) &&
0 0 if (!(syntax & (RE_CONTEXT_INDEP_ANCHORS | RE_CARET_ANCHORS_HERE)) &&
2023 0 0 if (!(syntax & RE_NEWLINE_ALT) || prev != '\n')
0 0 if (!(syntax & RE_NEWLINE_ALT) || prev != '\n')
2030 0 0 if (!(syntax & RE_CONTEXT_INDEP_ANCHORS) &&
0 0 if (!(syntax & RE_CONTEXT_INDEP_ANCHORS) &&
2037 0 0 if (next.type != OP_ALT && next.type != OP_CLOSE_SUBEXP)
0 0 if (next.type != OP_ALT && next.type != OP_CLOSE_SUBEXP)
2057 0 6 if (re_string_eoi (input))
2066 6 0 if (input->mb_cur_max > 1 &&
6 0 if (input->mb_cur_max > 1 &&
2067 0 6 !re_string_first_byte (input, re_string_cur_idx (input)))
2074 0 6 if (c == '\\' && (syntax & RE_BACKSLASH_ESCAPE_IN_LISTS)
0 0 if (c == '\\' && (syntax & RE_BACKSLASH_ESCAPE_IN_LISTS)
2075 0 0 && re_string_cur_idx (input) + 1 < re_string_length (input))
2085 0 6 if (c == '[') /* '[' is a special char in a bracket exps. */
2089 0 0 if (re_string_cur_idx (input) + 1 < re_string_length (input))
2104 0 0 if (syntax & RE_CHAR_CLASSES)
2159 0 6 if (BE (*err != REG_NOERROR && tree == NULL, 0))
0 0 if (BE (*err != REG_NOERROR && tree == NULL, 0))
2162 6 0 if (tree != NULL)
2166 6 0 if (BE (eor == NULL || root == NULL, 0))
0 6 if (BE (eor == NULL || root == NULL, 0))
2190 0 12 if (BE (*err != REG_NOERROR && tree == NULL, 0))
0 0 if (BE (*err != REG_NOERROR && tree == NULL, 0))
2193 0 12 while (token->type == OP_ALT)
2196 0 0 if (token->type != OP_ALT && token->type != END_OF_RE
0 0 if (token->type != OP_ALT && token->type != END_OF_RE
2197 0 0 && (nest == 0 || token->type != OP_CLOSE_SUBEXP))
0 0 && (nest == 0 || token->type != OP_CLOSE_SUBEXP))
2200 0 0 if (BE (*err != REG_NOERROR && branch == NULL, 0))
0 0 if (BE (*err != REG_NOERROR && branch == NULL, 0))
2206 0 0 if (BE (tree == NULL, 0))
2231 0 12 if (BE (*err != REG_NOERROR && tree == NULL, 0))
0 0 if (BE (*err != REG_NOERROR && tree == NULL, 0))
2234 32 0 while (token->type != OP_ALT && token->type != END_OF_RE
26 6 while (token->type != OP_ALT && token->type != END_OF_RE
2235 14 12 && (nest == 0 || token->type != OP_CLOSE_SUBEXP))
6 6 && (nest == 0 || token->type != OP_CLOSE_SUBEXP))
2238 0 20 if (BE (*err != REG_NOERROR && expr == NULL, 0))
0 0 if (BE (*err != REG_NOERROR && expr == NULL, 0))
2240 0 0 if (tree != NULL)
2244 20 0 if (tree != NULL && expr != NULL)
20 0 if (tree != NULL && expr != NULL)
2247 0 20 if (newtree == NULL)
2256 0 0 else if (tree == NULL)
2279 0 24 if (BE (tree == NULL, 0))
2285 24 0 if (dfa->mb_cur_max > 1)
2287 20 4 while (!re_string_eoi (regexp)
2288 20 0 && !re_string_first_byte (regexp, re_string_cur_idx (regexp)))
0 20 && !re_string_first_byte (regexp, re_string_cur_idx (regexp)))
2294 0 0 if (BE (mbc_remain == NULL || tree == NULL, 0))
0 0 if (BE (mbc_remain == NULL || tree == NULL, 0))
2305 0 6 if (BE (*err != REG_NOERROR && tree == NULL, 0))
0 0 if (BE (*err != REG_NOERROR && tree == NULL, 0))
2310 0 2 if (BE (*err != REG_NOERROR && tree == NULL, 0))
0 0 if (BE (*err != REG_NOERROR && tree == NULL, 0))
2314 0 0 if (!BE (dfa->completed_bkref_map & (1 << token->opr.idx), 1))
2321 0 0 if (BE (tree == NULL, 0))
2330 0 0 if (syntax & RE_CONTEXT_INVALID_DUP)
2339 0 0 if (syntax & RE_CONTEXT_INVALID_OPS)
2344 0 0 else if (syntax & RE_CONTEXT_INDEP_OPS)
2351 0 0 if ((token->type == OP_CLOSE_SUBEXP) &&
0 0 if ((token->type == OP_CLOSE_SUBEXP) &&
2366 0 0 if (BE (tree == NULL, 0))
2373 0 0 if ((token->opr.ctx_type
2375 0 0 && dfa->word_ops_used == 0)
2377 0 0 if (token->opr.ctx_type == WORD_DELIM
2378 0 0 || token->opr.ctx_type == NOT_WORD_DELIM)
2381 0 0 if (token->opr.ctx_type == WORD_DELIM)
2395 0 0 if (BE (tree_first == NULL || tree_last == NULL || tree == NULL, 0))
0 0 if (BE (tree_first == NULL || tree_last == NULL || tree == NULL, 0))
0 0 if (BE (tree_first == NULL || tree_last == NULL || tree == NULL, 0))
0 0 if (BE (tree_first == NULL || tree_last == NULL || tree == NULL, 0))
2404 0 0 if (BE (tree == NULL, 0))
2418 0 0 if (BE (tree == NULL, 0))
2423 0 0 if (dfa->mb_cur_max > 1)
2432 0 0 if (BE (*err != REG_NOERROR && tree == NULL, 0))
0 0 if (BE (*err != REG_NOERROR && tree == NULL, 0))
2441 0 0 if (BE (*err != REG_NOERROR && tree == NULL, 0))
0 0 if (BE (*err != REG_NOERROR && tree == NULL, 0))
2459 0 32 while (token->type == OP_DUP_ASTERISK || token->type == OP_DUP_PLUS
0 32 while (token->type == OP_DUP_ASTERISK || token->type == OP_DUP_PLUS
2460 0 32 || token->type == OP_DUP_QUESTION || token->type == OP_OPEN_DUP_NUM)
0 32 || token->type == OP_DUP_QUESTION || token->type == OP_OPEN_DUP_NUM)
2463 0 0 if (BE (*err != REG_NOERROR && tree == NULL, 0))
0 0 if (BE (*err != REG_NOERROR && tree == NULL, 0))
2466 0 0 if ((syntax & RE_CONTEXT_INVALID_DUP)
2467 0 0 && (token->type == OP_DUP_ASTERISK
2468 0 0 || token->type == OP_OPEN_DUP_NUM))
2497 0 6 if (token->type == OP_CLOSE_SUBEXP)
2502 6 0 if (BE (*err == REG_NOERROR && token->type != OP_CLOSE_SUBEXP, 0))
0 6 if (BE (*err == REG_NOERROR && token->type != OP_CLOSE_SUBEXP, 0))
2504 0 0 if (tree != NULL)
2508 0 6 if (BE (*err != REG_NOERROR, 0))
2512 6 0 if (cur_nsub <= '9' - '1')
2516 0 6 if (BE (tree == NULL, 0))
2535 0 0 if (token->type == OP_OPEN_DUP_NUM)
2539 0 0 if (start == REG_MISSING)
2541 0 0 if (token->type == CHARACTER && token->opr.c == ',')
0 0 if (token->type == CHARACTER && token->opr.c == ',')
2549 0 0 if (BE (start != REG_ERROR, 1))
2553 0 0 : ((token->type == CHARACTER && token->opr.c == ',')
0 0 : ((token->type == CHARACTER && token->opr.c == ',')
2554 0 0 ? fetch_number (aTHX_ regexp, token, syntax) : REG_ERROR));
2556 0 0 if (BE (start == REG_ERROR || end == REG_ERROR, 0))
0 0 if (BE (start == REG_ERROR || end == REG_ERROR, 0))
2559 0 0 if (BE (!(syntax & RE_INVALID_INTERVAL_ORD), 0))
2561 0 0 if (token->type == END_OF_RE)
2578 0 0 if (BE ((end != REG_MISSING && start > end)
0 0 if (BE ((end != REG_MISSING && start > end)
0 0 if (BE ((end != REG_MISSING && start > end)
0 0 if (BE ((end != REG_MISSING && start > end)
2586 0 0 if (BE (RE_DUP_MAX < (end == REG_MISSING ? start : end), 0))
0 0 if (BE (RE_DUP_MAX < (end == REG_MISSING ? start : end), 0))
2595 0 0 end = (token->type == OP_DUP_QUESTION) ? 1 : REG_MISSING;
2600 0 0 if (BE (elem == NULL, 0))
2602 0 0 if (BE (start == 0 && end == 0, 0))
0 0 if (BE (start == 0 && end == 0, 0))
2609 0 0 if (BE (start > 0, 0))
2612 0 0 for (i = 2; i <= start; ++i)
2616 0 0 if (BE (elem == NULL || tree == NULL, 0))
0 0 if (BE (elem == NULL || tree == NULL, 0))
2620 0 0 if (start == end)
2630 0 0 if (elem->token.type == SUBEXP)
2636 0 0 tree = create_tree (aTHX_ dfa, elem, NULL,
2638 0 0 if (BE (tree == NULL, 0))
2648 0 0 if (TYPE_SIGNED (Idx) || end != REG_MISSING)
2649 0 0 for (i = start + 2; i <= end; ++i)
2653 0 0 if (BE (elem == NULL || tree == NULL, 0))
0 0 if (BE (elem == NULL || tree == NULL, 0))
2657 0 0 if (BE (tree == NULL, 0))
2661 0 0 if (old_tree)
2701 0 0 if (BE (start_elem->type == EQUIV_CLASS || start_elem->type == CHAR_CLASS
0 0 if (BE (start_elem->type == EQUIV_CLASS || start_elem->type == CHAR_CLASS
0 0 if (BE (start_elem->type == EQUIV_CLASS || start_elem->type == CHAR_CLASS
0 0 if (BE (start_elem->type == EQUIV_CLASS || start_elem->type == CHAR_CLASS
0 0 if (BE (start_elem->type == EQUIV_CLASS || start_elem->type == CHAR_CLASS
0 0 if (BE (start_elem->type == EQUIV_CLASS || start_elem->type == CHAR_CLASS
2708 0 0 if (BE ((start_elem->type == COLL_SYM
0 0 if (BE ((start_elem->type == COLL_SYM
0 0 if (BE ((start_elem->type == COLL_SYM
0 0 if (BE ((start_elem->type == COLL_SYM
0 0 if (BE ((start_elem->type == COLL_SYM
0 0 if (BE ((start_elem->type == COLL_SYM
2720 0 0 start_ch = ((start_elem->type == SB_CHAR) ? start_elem->opr.ch
0 0 start_ch = ((start_elem->type == SB_CHAR) ? start_elem->opr.ch
2723 0 0 end_ch = ((end_elem->type == SB_CHAR) ? end_elem->opr.ch
0 0 end_ch = ((end_elem->type == SB_CHAR) ? end_elem->opr.ch
2726 0 0 start_wc = ((start_elem->type == SB_CHAR || start_elem->type == COLL_SYM)
2727 0 0 ? rpl__btowc (start_ch) : start_elem->opr.wch);
2728 0 0 end_wc = ((end_elem->type == SB_CHAR || end_elem->type == COLL_SYM)
2729 0 0 ? rpl__btowc (end_ch) : end_elem->opr.wch);
2730 0 0 if (start_wc == rpl__WEOF || end_wc == rpl__WEOF)
0 0 if (start_wc == rpl__WEOF || end_wc == rpl__WEOF)
2732 0 0 else if (BE ((syntax & RE_NO_EMPTY_RANGES) && start_wc > end_wc, 0))
0 0 else if (BE ((syntax & RE_NO_EMPTY_RANGES) && start_wc > end_wc, 0))
2740 0 0 if (mbcset)
2743 0 0 if (BE (*range_alloc == mbcset->nranges, 0))
2752 0 0 re_realloc (mbcset->range_starts, rpl__wchar_t, new_nranges);
2753 0 0 re_realloc (mbcset->range_ends, rpl__wchar_t, new_nranges);
2762 0 0 for (wc = 0; wc < SBC_MAX; ++wc)
2764 0 0 if (start_wc <= wc && wc <= end_wc)
0 0 if (start_wc <= wc && wc <= end_wc)
2806 0 0 if (BE (name_len != 1, 0))
3091 2 0 if (BE (sbcset == NULL || mbcset == NULL, 0))
0 2 if (BE (sbcset == NULL || mbcset == NULL, 0))
3096 0 0 re_free (sbcset);
3098 0 0 re_free (mbcset);
3105 0 2 if (BE (token->type == END_OF_RE, 0))
3110 2 0 if (token->type == OP_NON_MATCH_LIST)
3116 0 2 if (syntax & RE_HAT_LISTS_NOT_NEWLINE)
3120 0 2 if (BE (token->type == END_OF_RE, 0))
3128 0 2 if (token->type == OP_CLOSE_BRACKET)
3144 0 2 if (BE (ret != REG_NOERROR, 0))
3155 2 0 if (start_elem.type != CHAR_CLASS && start_elem.type != EQUIV_CLASS)
2 0 if (start_elem.type != CHAR_CLASS && start_elem.type != EQUIV_CLASS)
3157 0 2 if (BE (token->type == END_OF_RE, 0))
3162 0 2 if (token->type == OP_CHARSET_RANGE)
3166 0 0 if (BE (token2.type == END_OF_RE, 0))
3171 0 0 if (token2.type == OP_CLOSE_BRACKET)
3182 0 2 if (is_range_exp == true)
3187 0 0 if (BE (ret != REG_NOERROR, 0))
3200 0 0 *err = build_range_exp (aTHX_ syntax, sbcset,
3207 0 0 if (BE (*err != REG_NOERROR, 0))
3220 0 0 if (BE (mbchar_alloc == mbcset->nmbchars, 0))
3226 0 0 re_realloc (mbcset->mbchars, rpl__wchar_t, mbchar_alloc);
3237 0 0 if (BE (*err != REG_NOERROR, 0))
3246 0 0 if (BE (*err != REG_NOERROR, 0))
3256 0 0 if (BE (*err != REG_NOERROR, 0))
3264 0 2 if (BE (token->type == END_OF_RE, 0))
3269 2 0 if (token->type == OP_CLOSE_BRACKET)
3276 2 0 if (non_match)
3281 2 0 if (dfa->mb_cur_max > 1)
3284 2 0 if (mbcset->nmbchars || mbcset->ncoll_syms || mbcset->nequiv_classes
2 0 if (mbcset->nmbchars || mbcset->ncoll_syms || mbcset->nequiv_classes
2 0 if (mbcset->nmbchars || mbcset->ncoll_syms || mbcset->nequiv_classes
3285 2 0 || mbcset->nranges || (dfa->mb_cur_max > 1 && (mbcset->nchar_classes
2 0 || mbcset->nranges || (dfa->mb_cur_max > 1 && (mbcset->nchar_classes
2 0 || mbcset->nranges || (dfa->mb_cur_max > 1 && (mbcset->nchar_classes
3286 2 0 || mbcset->non_match)))
3295 0 2 if (BE (mbc_tree == NULL, 0))
3297 2 0 for (sbc_idx = 0; sbc_idx < BITSET_WORDS; ++sbc_idx)
3298 2 0 if (sbcset[sbc_idx])
3302 2 0 if (sbc_idx < BITSET_WORDS)
3308 0 2 if (BE (work_tree == NULL, 0))
3313 0 2 if (BE (work_tree == NULL, 0))
3318 0 0 re_free (sbcset);
3332 0 0 if (BE (work_tree == NULL, 0))
3340 0 0 re_free (sbcset);
3357 0 2 if (cur_char_size > 1)
3366 2 0 if (token->type == OP_OPEN_COLL_ELEM || token->type == OP_OPEN_CHAR_CLASS
2 0 if (token->type == OP_OPEN_COLL_ELEM || token->type == OP_OPEN_CHAR_CLASS
3367 0 2 || token->type == OP_OPEN_EQUIV_CLASS)
3369 0 2 if (BE (token->type == OP_CHARSET_RANGE, 0) && !accept_hyphen)
0 0 if (BE (token->type == OP_CHARSET_RANGE, 0) && !accept_hyphen)
3375 0 0 if (token2.type != OP_CLOSE_BRACKET)
3395 0 0 if (re_string_eoi(regexp))
3399 0 0 if (i >= BRACKET_NAME_BUF_SIZE)
3401 0 0 if (token->type == OP_OPEN_CHAR_CLASS)
3405 0 0 if (re_string_eoi(regexp))
3407 0 0 if (ch == delim && re_string_peek_byte (aTHX_ regexp, 0) == ']')
0 0 if (ch == delim && re_string_peek_byte (aTHX_ regexp, 0) == ']')
3513 0 0 if (BE (strlen ((const char *) name) != 1, 0))
3541 0 0 if ((syntax & RE_ICASE)
3542 0 0 && (strcmp (name, "upper") == 0 || strcmp (name, "lower") == 0))
0 0 && (strcmp (name, "upper") == 0 || strcmp (name, "lower") == 0))
3547 0 0 if (BE (*char_class_alloc == mbcset->nchar_classes, 0))
3553 0 0 re_realloc (mbcset->char_classes, rpl__wctype_t, new_char_class_alloc);
3575 0 0 if (strcmp (name, "alnum") == 0)
3576 0 0 BUILD_CHARCLASS_LOOP (rpl__isalnum);
0 0 BUILD_CHARCLASS_LOOP (rpl__isalnum);
0 0 BUILD_CHARCLASS_LOOP (rpl__isalnum);
0 0 BUILD_CHARCLASS_LOOP (rpl__isalnum);
0 0 BUILD_CHARCLASS_LOOP (rpl__isalnum);
3577 0 0 else if (strcmp (name, "cntrl") == 0)
3578 0 0 BUILD_CHARCLASS_LOOP (rpl__iscntrl);
0 0 BUILD_CHARCLASS_LOOP (rpl__iscntrl);
0 0 BUILD_CHARCLASS_LOOP (rpl__iscntrl);
0 0 BUILD_CHARCLASS_LOOP (rpl__iscntrl);
0 0 BUILD_CHARCLASS_LOOP (rpl__iscntrl);
3579 0 0 else if (strcmp (name, "lower") == 0)
3580 0 0 BUILD_CHARCLASS_LOOP (rpl__islower);
0 0 BUILD_CHARCLASS_LOOP (rpl__islower);
0 0 BUILD_CHARCLASS_LOOP (rpl__islower);
0 0 BUILD_CHARCLASS_LOOP (rpl__islower);
0 0 BUILD_CHARCLASS_LOOP (rpl__islower);
3581 0 0 else if (strcmp (name, "space") == 0)
3582 0 0 BUILD_CHARCLASS_LOOP (rpl__isspace);
0 0 BUILD_CHARCLASS_LOOP (rpl__isspace);
0 0 BUILD_CHARCLASS_LOOP (rpl__isspace);
0 0 BUILD_CHARCLASS_LOOP (rpl__isspace);
0 0 BUILD_CHARCLASS_LOOP (rpl__isspace);
3583 0 0 else if (strcmp (name, "alpha") == 0)
3584 0 0 BUILD_CHARCLASS_LOOP (rpl__isalpha);
0 0 BUILD_CHARCLASS_LOOP (rpl__isalpha);
0 0 BUILD_CHARCLASS_LOOP (rpl__isalpha);
0 0 BUILD_CHARCLASS_LOOP (rpl__isalpha);
0 0 BUILD_CHARCLASS_LOOP (rpl__isalpha);
3585 0 0 else if (strcmp (name, "digit") == 0)
3586 0 0 BUILD_CHARCLASS_LOOP (rpl__isdigit);
0 0 BUILD_CHARCLASS_LOOP (rpl__isdigit);
0 0 BUILD_CHARCLASS_LOOP (rpl__isdigit);
0 0 BUILD_CHARCLASS_LOOP (rpl__isdigit);
0 0 BUILD_CHARCLASS_LOOP (rpl__isdigit);
3587 0 0 else if (strcmp (name, "print") == 0)
3588 0 0 BUILD_CHARCLASS_LOOP (rpl__isprint);
0 0 BUILD_CHARCLASS_LOOP (rpl__isprint);
0 0 BUILD_CHARCLASS_LOOP (rpl__isprint);
0 0 BUILD_CHARCLASS_LOOP (rpl__isprint);
0 0 BUILD_CHARCLASS_LOOP (rpl__isprint);
3589 0 0 else if (strcmp (name, "upper") == 0)
3590 0 0 BUILD_CHARCLASS_LOOP (rpl__isupper);
0 0 BUILD_CHARCLASS_LOOP (rpl__isupper);
0 0 BUILD_CHARCLASS_LOOP (rpl__isupper);
0 0 BUILD_CHARCLASS_LOOP (rpl__isupper);
0 0 BUILD_CHARCLASS_LOOP (rpl__isupper);
3591 0 0 else if (strcmp (name, "blank") == 0)
3592 0 0 BUILD_CHARCLASS_LOOP (rpl__isblank);
0 0 BUILD_CHARCLASS_LOOP (rpl__isblank);
0 0 BUILD_CHARCLASS_LOOP (rpl__isblank);
0 0 BUILD_CHARCLASS_LOOP (rpl__isblank);
0 0 BUILD_CHARCLASS_LOOP (rpl__isblank);
3593 0 0 else if (strcmp (name, "graph") == 0)
3594 0 0 BUILD_CHARCLASS_LOOP (rpl__isgraph);
0 0 BUILD_CHARCLASS_LOOP (rpl__isgraph);
0 0 BUILD_CHARCLASS_LOOP (rpl__isgraph);
0 0 BUILD_CHARCLASS_LOOP (rpl__isgraph);
0 0 BUILD_CHARCLASS_LOOP (rpl__isgraph);
3595 0 0 else if (strcmp (name, "punct") == 0)
3596 0 0 BUILD_CHARCLASS_LOOP (rpl__ispunct);
0 0 BUILD_CHARCLASS_LOOP (rpl__ispunct);
0 0 BUILD_CHARCLASS_LOOP (rpl__ispunct);
0 0 BUILD_CHARCLASS_LOOP (rpl__ispunct);
0 0 BUILD_CHARCLASS_LOOP (rpl__ispunct);
3597 0 0 else if (strcmp (name, "xdigit") == 0)
3598 0 0 BUILD_CHARCLASS_LOOP (rpl__isxdigit);
0 0 BUILD_CHARCLASS_LOOP (rpl__isxdigit);
0 0 BUILD_CHARCLASS_LOOP (rpl__isxdigit);
0 0 BUILD_CHARCLASS_LOOP (rpl__isxdigit);
0 0 BUILD_CHARCLASS_LOOP (rpl__isxdigit);
3628 0 0 if (BE (sbcset == NULL || mbcset == NULL, 0))
0 0 if (BE (sbcset == NULL || mbcset == NULL, 0))
3637 0 0 if (non_match)
3651 0 0 if (BE (ret != REG_NOERROR, 0))
3653 0 0 re_free (sbcset);
3661 0 0 for (; *extra; extra++)
3665 0 0 if (non_match)
3670 0 0 if (dfa->mb_cur_max > 1)
3678 0 0 if (BE (tree == NULL, 0))
3682 0 0 if (dfa->mb_cur_max > 1)
3690 0 0 if (BE (mbc_tree == NULL, 0))
3694 0 0 if (BE (mbc_tree != NULL, 1))
3707 0 0 re_free (sbcset);
3730 0 0 if (BE (token->type == END_OF_RE, 0))
3732 0 0 if (token->type == OP_CLOSE_DUP_NUM || c == ',')
0 0 if (token->type == OP_CLOSE_DUP_NUM || c == ',')
3734 0 0 num = ((token->type != CHARACTER || c < '0' || '9' < c
0 0 num = ((token->type != CHARACTER || c < '0' || '9' < c
3735 0 0 || num == REG_ERROR)
3737 0 0 : num == REG_MISSING
3739 0 0 : MIN (RE_DUP_MAX + 1, num * 10 + c - '0'));
3748 0 2 re_free (cset->mbchars);
3755 0 2 re_free (cset->char_classes);
3756 2 0 re_free (cset);
3778 8 84 if (BE (dfa->str_tree_storage_idx == BIN_TREE_STORAGE_SIZE, 0))
3799 46 46 if (left != NULL)
3801 40 52 if (right != NULL)
3813 0 0 if (node->token.type == SUBEXP && node->token.opr.idx == idx)
0 0 if (node->token.type == SUBEXP && node->token.opr.idx == idx)
3825 2 46 if (node->type == COMPLEX_BRACKET && node->duplicated == 0)
2 0 if (node->type == COMPLEX_BRACKET && node->duplicated == 0)
3829 2 44 if (node->type == SIMPLE_BRACKET && node->duplicated == 0)
2 0 if (node->type == SIMPLE_BRACKET && node->duplicated == 0)
3830 2 0 re_free (node->opr.sbcset);
3860 0 0 if (*p_new == NULL)
3867 0 0 if (node->left)
3875 0 0 while (node->right == prev || node->right == NULL)
0 0 while (node->right == prev || node->right == NULL)
3880 0 0 if (!node)