Branch Coverage

regexec.c
Criterion Covered Total %
branch 334 1604 20.8


line true false branch
228 0 0 if (eflags & ~(REG_NOTBOL | REG_NOTEOL | REG_STARTEND))
231 0 0 if (eflags & REG_STARTEND)
243 0 0 if (preg->no_sub)
355 0 0 if (BE (length1 < 0 || length2 < 0 || stop < 0 || len < length1 || DO_UTF8(sv1) != DO_UTF8(sv2), 0))
0 0 if (BE (length1 < 0 || length2 < 0 || stop < 0 || len < length1 || DO_UTF8(sv1) != DO_UTF8(sv2), 0))
0 0 if (BE (length1 < 0 || length2 < 0 || stop < 0 || len < length1 || DO_UTF8(sv1) != DO_UTF8(sv2), 0))
0 0 if (BE (length1 < 0 || length2 < 0 || stop < 0 || len < length1 || DO_UTF8(sv1) != DO_UTF8(sv2), 0))
0 0 if (BE (length1 < 0 || length2 < 0 || stop < 0 || len < length1 || DO_UTF8(sv1) != DO_UTF8(sv2), 0))
0 0 if (BE (length1 < 0 || length2 < 0 || stop < 0 || len < length1 || DO_UTF8(sv1) != DO_UTF8(sv2), 0))
359 0 0 if (length2 > 0)
360 0 0 if (length1 > 0)
383 0 0 re_free (s);
407 0 14 if (BE (start < 0 || start > length, 0))
409 14 0 if (BE (length < last_start || (0 <= range && last_start < start), 0))
14 0 if (BE (length < last_start || (0 <= range && last_start < start), 0))
0 14 if (BE (length < last_start || (0 <= range && last_start < start), 0))
0 14 if (BE (length < last_start || (0 <= range && last_start < start), 0))
411 0 14 else if (BE (last_start < 0 || (range < 0 && start <= last_start), 0))
0 0 else if (BE (last_start < 0 || (range < 0 && start <= last_start), 0))
417 0 14 eflags |= (bufp->not_eol) ? REG_NOTEOL : 0;
420 14 0 if (start < last_start && bufp->fastmap != NULL && !bufp->fastmap_accurate)
0 14 if (start < last_start && bufp->fastmap != NULL && !bufp->fastmap_accurate)
0 0 if (start < last_start && bufp->fastmap != NULL && !bufp->fastmap_accurate)
423 0 14 if (BE (bufp->no_sub, 0))
427 0 14 if (regs == NULL)
429 0 14 else if (BE (bufp->regs_allocated == REGS_FIXED
0 0 else if (BE (bufp->regs_allocated == REGS_FIXED
433 0 0 if (BE (nregs < 1, 0))
443 0 14 re_malloc (pmatch, regmatch_t, nregs);
450 2 12 if (result != REG_NOERROR)
451 2 0 rval = result == REG_NOMATCH ? -1 : -2;
452 12 0 else if (regs != NULL)
457 0 12 if (BE (bufp->regs_allocated == REGS_UNALLOCATED, 0))
461 12 2 if (BE (rval == 0, 1))
463 0 12 if (ret_len)
471 14 0 re_free (pmatch);
488 5 7 if (regs_allocated == REGS_UNALLOCATED)
490 0 5 re_malloc (regs->start, regoff_t, need_regs);
491 0 5 re_malloc (regs->end, regoff_t, need_regs);
494 7 0 else if (regs_allocated == REGS_REALLOCATE)
498 7 0 if (BE (need_regs > regs->num_regs, 0))
500 0 7 re_realloc (regs->start, regoff_t, need_regs);
501 0 7 re_realloc (regs->end, regoff_t, need_regs);
514 25 12 for (i = 0; i < nregs; ++i)
519 12 12 for ( ; i < regs->num_regs; ++i)
541 0 0 if (num_regs)
609 0 0 char *fastmap = ((preg->fastmap != NULL && preg->fastmap_accurate
610 0 0 && start != last_start && !preg->can_be_null)
0 0 && start != last_start && !preg->can_be_null)
611 0 14 ? preg->fastmap : NULL);
622 14 0 extra_nmatch = (nmatch > preg->re_nsub) ? nmatch - (preg->re_nsub + 1) : 0;
626 14 0 if (BE (preg->used == 0 || dfa->init_state == NULL
0 14 if (BE (preg->used == 0 || dfa->init_state == NULL
14 0 if (BE (preg->used == 0 || dfa->init_state == NULL
0 14 if (BE (preg->used == 0 || dfa->init_state == NULL
14 0 if (BE (preg->used == 0 || dfa->init_state == NULL
0 14 if (BE (preg->used == 0 || dfa->init_state == NULL
14 0 if (BE (preg->used == 0 || dfa->init_state == NULL
0 14 if (BE (preg->used == 0 || dfa->init_state == NULL
639 0 14 if (dfa->init_state->nodes.nelem == 0
640 0 0 && dfa->init_state_word->nodes.nelem == 0
641 0 0 && (dfa->init_state_nl->nodes.nelem == 0
642 0 0 || !preg->newline_anchor))
644 0 0 if (start != 0 && last_start != 0)
0 0 if (start != 0 && last_start != 0)
650 0 14 fl_longest_match = (nmatch != 0 || dfa->nbackref);
0 0 fl_longest_match = (nmatch != 0 || dfa->nbackref);
655 0 14 if (BE (err != REG_NOERROR, 0))
662 0 14 if (BE (err != REG_NOERROR, 0))
669 1 13 if (nmatch > 1 || dfa->has_mb_node)
0 1 if (nmatch > 1 || dfa->has_mb_node)
672 0 13 if (BE ((MIN (IDX_MAX, SIZE_MAX / sizeof (re_dfastate_t *))
679 0 13 re_malloc (mctx.state_log, re_dfastate_t *, mctx.input.bufs_len + 1);
685 0 14 mctx.input.tip_context = (eflags & REG_NOTBOL) ? CONTEXT_BEGBUF
689 0 14 incr = (last_start < start) ? -1 : 1;
695 0 0 ? ((sb || !(preg->syntax & RE_ICASE || t) ? 4 : 0)
0 0 ? ((sb || !(preg->syntax & RE_ICASE || t) ? 4 : 0)
0 0 ? ((sb || !(preg->syntax & RE_ICASE || t) ? 4 : 0)
696 0 0 | (start <= last_start ? 2 : 0)
698 0 14 : 8);
703 53 0 if (match_first < left_lim || right_lim < match_first)
51 2 if (match_first < left_lim || right_lim < match_first)
719 0 0 while (BE (match_first < right_lim, 1)
720 0 0 && !fastmap[t[(unsigned char) string[match_first]]])
726 0 0 while (BE (match_first < right_lim, 1)
727 0 0 && !fastmap[(unsigned char) string[match_first]])
731 0 0 if (BE (match_first == right_lim, 0))
734 0 0 ? 0 : (unsigned char) string[match_first];
735 0 0 if (!fastmap[t ? t[ch] : ch])
0 0 if (!fastmap[t ? t[ch] : ch])
743 0 0 while (match_first >= left_lim)
746 0 0 ? 0 : (unsigned char) string[match_first];
747 0 0 if (fastmap[t ? t[ch] : ch])
0 0 if (fastmap[t ? t[ch] : ch])
751 0 0 if (match_first < left_lim)
764 0 0 if (BE (offset >= (__re_size_t) mctx.input.valid_raw_len, 0))
768 0 0 if (BE (err != REG_NOERROR, 0))
776 0 0 ? 0 : re_string_byte_at (&mctx.input, offset));
777 0 0 if (fastmap[ch])
780 0 0 if (match_first < left_lim || match_first > right_lim)
0 0 if (match_first < left_lim || match_first > right_lim)
792 0 51 if (BE (err != REG_NOERROR, 0))
798 51 0 if (!sb && !re_string_first_byte (&mctx.input, 0))
49 2 if (!sb && !re_string_first_byte (&mctx.input, 0))
16 33 if (!sb && !re_string_first_byte (&mctx.input, 0))
805 35 0 match_last = check_matching (aTHX_ &mctx, fl_longest_match,
807 12 23 if (match_last != REG_MISSING)
809 0 12 if (BE (match_last == REG_ERROR, 0))
817 12 0 if ((!preg->no_sub && nmatch > 1) || dfa->nbackref)
0 12 if ((!preg->no_sub && nmatch > 1) || dfa->nbackref)
0 0 if ((!preg->no_sub && nmatch > 1) || dfa->nbackref)
823 12 0 if ((!preg->no_sub && nmatch > 1 && dfa->has_plural_match)
12 0 if ((!preg->no_sub && nmatch > 1 && dfa->has_plural_match)
3 9 if ((!preg->no_sub && nmatch > 1 && dfa->has_plural_match)
824 0 3 || dfa->nbackref)
827 9 0 if (err == REG_NOERROR)
829 0 0 if (BE (err != REG_NOMATCH, 0))
847 12 0 if (nmatch > 0)
852 13 12 for (reg_idx = 1; reg_idx < nmatch; ++reg_idx)
862 12 0 if (!preg->no_sub && nmatch > 1)
12 0 if (!preg->no_sub && nmatch > 1)
865 9 3 dfa->has_plural_match && dfa->nbackref > 0);
0 9 dfa->has_plural_match && dfa->nbackref > 0);
866 0 12 if (BE (err != REG_NOERROR, 0))
873 25 12 for (reg_idx = 0; reg_idx < nmatch; ++reg_idx)
874 25 0 if (pmatch[reg_idx].rm_so != -1)
877 0 25 if (BE (mctx.input.offsets_needed != 0, 0))
879 0 0 pmatch[reg_idx].rm_so =
883 0 0 pmatch[reg_idx].rm_eo =
894 0 12 for (reg_idx = 0; reg_idx < extra_nmatch; ++reg_idx)
900 0 12 if (dfa->subexp_map)
901 0 0 for (reg_idx = 0; reg_idx + 1 < nmatch; reg_idx++)
902 0 0 if (dfa->subexp_map[reg_idx] != reg_idx)
912 13 1 re_free (mctx.state_log);
913 0 14 if (dfa->nbackref)
936 0 9 if (BE (MIN (IDX_MAX, SIZE_MAX / sizeof (re_dfastate_t *)) <= match_last, 0))
939 0 9 re_malloc (sifted_states, re_dfastate_t *, match_last + 1);
940 0 9 if (dfa->nbackref)
942 0 0 re_malloc (lim_states, re_dfastate_t *, match_last + 1);
950 0 0 re_node_set_free (&sctx.limits);
951 0 0 if (BE (ret != REG_NOERROR, 0))
953 0 0 if (sifted_states[0] != NULL || lim_states[0] != NULL)
0 0 if (sifted_states[0] != NULL || lim_states[0] != NULL)
958 0 0 if (! REG_VALID_INDEX (match_last))
964 0 0 || !mctx->state_log[match_last]->halt);
0 0 || !mctx->state_log[match_last]->halt);
971 0 0 re_free (lim_states);
973 0 0 if (BE (ret != REG_NOERROR, 0))
980 0 9 re_node_set_free (&sctx.limits);
981 0 9 if (BE (ret != REG_NOERROR, 0))
983 0 9 if (sifted_states[0] == NULL)
989 9 0 re_free (mctx->state_log);
996 0 9 re_free (sifted_states);
997 0 9 re_free (lim_states);
1011 0 35 if (dfa->init_state->has_constraint)
1015 0 0 if (IS_WORD_CONTEXT (context))
1017 0 0 else if (IS_ORDINARY_CONTEXT (context))
1019 0 0 else if (IS_BEGBUF_CONTEXT (context) && IS_NEWLINE_CONTEXT (context))
0 0 else if (IS_BEGBUF_CONTEXT (context) && IS_NEWLINE_CONTEXT (context))
1021 0 0 else if (IS_NEWLINE_CONTEXT (context))
1023 0 0 else if (IS_BEGBUF_CONTEXT (context))
1064 0 35 if (BE (cur_state == NULL, 0))
1070 21 14 if (mctx->state_log != NULL)
1076 0 21 if (BE (dfa->nbackref, 0))
1080 0 0 if (BE (err != REG_NOERROR, 0))
1083 0 0 if (cur_state->has_backref)
1086 0 0 if (BE (err != REG_NOERROR, 0))
1093 0 35 if (BE (cur_state->halt, 0))
1095 0 0 if (!cur_state->has_constraint
1096 0 0 || check_halt_state_context (aTHX_ mctx, cur_state, cur_str_idx))
1098 0 0 if (!fl_longest_match)
1108 61 5 while (!re_string_eoi (&mctx->input))
1113 0 61 if ((BE (next_char_idx >= mctx->input.bufs_len, 0)
1114 0 0 && mctx->input.bufs_len < mctx->input.len)
1115 7 54 || (BE (next_char_idx >= mctx->input.valid_len, 0)
1116 0 7 && mctx->input.valid_len < mctx->input.len))
1119 0 0 if (BE (err != REG_NOERROR, 0))
1127 46 15 if (mctx->state_log != NULL)
1130 46 15 if (cur_state == NULL)
1135 0 46 if (BE (err != REG_NOERROR, 0))
1138 33 13 if (mctx->state_log == NULL
1139 9 24 || (match && !fl_longest_match)
9 0 || (match && !fl_longest_match)
1140 16 17 || (cur_state = find_recover_state (aTHX_ &err, mctx)) == NULL)
1144 21 10 if (BE (at_init_state, 0))
1146 0 21 if (old_state == cur_state)
1152 12 19 if (cur_state->halt)
1156 0 12 if (!cur_state->has_constraint
1157 0 0 || check_halt_state_context (aTHX_ mctx, cur_state,
1166 0 12 if (!fl_longest_match)
1172 23 12 if (p_match_first)
1186 9 12 if (type != END_OF_RE)
1188 12 0 if (!constraint)
1190 0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (constraint, context))
1210 21 0 for (i = 0; i < state->nodes.nelem; ++i)
1211 12 9 if (check_halt_node_context (aTHX_ mctx->dfa, state->nodes.elems[i], context))
1230 35 22 if (IS_EPSILON_NODE (dfa->nodes[node].type))
1236 0 35 if (BE (! ok, 0))
1240 44 35 for (dest_node = REG_MISSING, i = 0; i < edests->nelem; ++i)
1243 9 35 if (!re_node_set_contains (aTHX_ cur_nodes, candidate))
1245 35 0 if (dest_node == REG_MISSING)
1252 0 0 if (re_node_set_contains (aTHX_ eps_via_nodes, dest_node))
1256 0 0 else if (fs != NULL
1257 0 0 && push_fail_stack (aTHX_ fs, *pidx, candidate, nregs, regs,
1273 9 13 if (dfa->nodes[node].accept_mb)
1277 0 13 if (type == OP_BACK_REF)
1281 0 0 if (fs != NULL)
1283 0 0 if (regs[subexp_idx].rm_so == -1 || regs[subexp_idx].rm_eo == -1)
0 0 if (regs[subexp_idx].rm_so == -1 || regs[subexp_idx].rm_eo == -1)
1285 0 0 else if (naccepted)
1288 0 0 if (memcmp (buf + regs[subexp_idx].rm_so, buf + *pidx,
1294 0 0 if (naccepted == 0)
1298 0 0 if (BE (! ok, 0))
1301 0 0 if (re_node_set_contains (aTHX_ &mctx->state_log[*pidx]->nodes,
1307 13 9 if (naccepted != 0
1308 13 0 || check_node_accept (aTHX_ mctx, dfa->nodes + node, *pidx))
1311 13 9 *pidx = (naccepted == 0) ? *pidx + 1 : *pidx + naccepted;
1312 0 22 if (fs && (*pidx > mctx->match_last || mctx->state_log[*pidx] == NULL
0 0 if (fs && (*pidx > mctx->match_last || mctx->state_log[*pidx] == NULL
0 0 if (fs && (*pidx > mctx->match_last || mctx->state_log[*pidx] == NULL
1313 0 0 || !re_node_set_contains (aTHX_ &mctx->state_log[*pidx]->nodes,
1330 0 0 if (fs->num == fs->alloc)
1333 0 0 Renew(fs->stack, (sizeof (struct re_fail_stack_ent_t) * fs->alloc * 2), struct re_fail_stack_ent_t);
1338 0 0 re_malloc (fs->stack[num].regs, regmatch_t, nregs);
1339 0 0 Copy (regs, fs->stack[num].regs, nregs, regmatch_t);
1352 0 0 Copy (fs->stack[num].regs, regs, nregs, regmatch_t);
1353 0 0 re_node_set_free (eps_via_nodes);
1354 0 0 re_free (fs->stack[num].regs);
1381 0 12 if (fl_backtrack)
1384 0 0 re_malloc (fs->stack, struct re_fail_stack_ent_t, fs->alloc);
1396 0 12 re_malloc (prev_idx_match, regmatch_t, nmatch);
1399 0 12 Copy (pmatch, prev_idx_match, nmatch, regmatch_t);
1401 69 0 for (idx = (Idx)pmatch[0].rm_so; idx <= (Idx)pmatch[0].rm_eo ;)
1405 21 48 if (idx == pmatch[0].rm_eo && cur_node == mctx->last_node)
12 9 if (idx == pmatch[0].rm_eo && cur_node == mctx->last_node)
1408 0 12 if (fs)
1410 0 0 for (reg_idx = 0; reg_idx < nmatch; ++reg_idx)
1411 0 0 if (pmatch[reg_idx].rm_so > -1 && pmatch[reg_idx].rm_eo == -1)
0 0 if (pmatch[reg_idx].rm_so > -1 && pmatch[reg_idx].rm_eo == -1)
1413 0 0 if (reg_idx == nmatch)
1415 0 0 re_node_set_free (&eps_via_nodes);
1416 0 0 if (prev_idx_match_malloced)
1417 0 0 re_free (prev_idx_match);
1425 12 0 re_node_set_free (&eps_via_nodes);
1426 12 0 if (prev_idx_match_malloced)
1427 12 0 re_free (prev_idx_match);
1436 0 57 if (BE (! REG_VALID_INDEX (cur_node), 0))
1438 0 0 if (BE (cur_node == REG_ERROR, 0))
1440 0 0 re_node_set_free (&eps_via_nodes);
1441 0 0 if (prev_idx_match_malloced)
1442 0 0 re_free (prev_idx_match);
1446 0 0 if (fs)
1451 0 0 re_node_set_free (&eps_via_nodes);
1452 0 0 if (prev_idx_match_malloced)
1453 0 0 re_free (prev_idx_match);
1458 0 0 re_node_set_free (&eps_via_nodes);
1459 0 0 if (prev_idx_match_malloced)
1460 0 0 re_free (prev_idx_match);
1468 0 0 if (fs)
1471 0 0 for (fs_idx = 0; fs_idx < fs->num; ++fs_idx)
1473 0 0 re_node_set_free (&fs->stack[fs_idx].eps_via_nodes);
1474 0 0 re_free (fs->stack[fs_idx].regs);
1476 0 0 re_free (fs->stack);
1487 13 56 if (type == OP_OPEN_SUBEXP)
1492 13 0 if (reg_num < nmatch)
1498 13 43 else if (type == OP_CLOSE_SUBEXP)
1501 13 0 if (reg_num < nmatch)
1504 13 0 if ((Idx)pmatch[reg_num].rm_so < cur_idx)
1509 0 13 Copy (pmatch, prev_idx_match, nmatch, regmatch_t);
1513 0 0 if (dfa->nodes[cur_node].opt_subexp
1514 0 0 && prev_idx_match[reg_num].rm_so != -1)
1520 0 0 Copy (prev_idx_match, pmatch, nmatch, regmatch_t);
1569 0 9 if (BE (err != REG_NOERROR, 0))
1572 0 9 if (BE (err != REG_NOERROR, 0))
1576 28 9 while (str_idx > 0)
1579 18 10 null_cnt = (sctx->sifted_states[str_idx] == NULL) ? null_cnt + 1 : 0;
1580 0 28 if (null_cnt > mctx->max_mb_elem_len)
1584 0 0 re_node_set_free (&cur_dest);
1590 10 18 if (mctx->state_log[str_idx])
1593 0 10 if (BE (err != REG_NOERROR, 0))
1602 0 28 if (BE (err != REG_NOERROR, 0))
1607 9 0 re_node_set_free (&cur_dest);
1627 19 10 for (i = 0; i < cur_src->nelem; i++)
1639 9 10 if (dfa->nodes[prev_node].accept_mb)
1646 10 9 if (!naccepted
1647 1 9 && check_node_accept (aTHX_ mctx, dfa->nodes + prev_node, str_idx)
1648 1 0 && STATE_NODE_CONTAINS (sctx->sifted_states[str_idx + 1],
1 0 && STATE_NODE_CONTAINS (sctx->sifted_states[str_idx + 1],
1652 9 10 if (naccepted == 0)
1655 0 10 if (sctx->limits.nelem)
1658 0 0 if (check_dst_limits (aTHX_ mctx, &sctx->limits,
1664 0 10 if (BE (! ok, 0))
1679 0 16 if ((next_state_log_idx >= mctx->input.bufs_len
1680 0 0 && mctx->input.bufs_len < mctx->input.len)
1681 0 16 || (next_state_log_idx >= mctx->input.valid_len
1682 0 0 && mctx->input.valid_len < mctx->input.len))
1686 0 0 if (BE (err != REG_NOERROR, 0))
1690 16 0 if (top < next_state_log_idx)
1706 0 0 for (st_idx = 0; st_idx < num; ++st_idx)
1708 0 0 if (dst[st_idx] == NULL)
1710 0 0 else if (src[st_idx] != NULL)
1715 0 0 if (BE (err != REG_NOERROR, 0))
1718 0 0 re_node_set_free (&merged_set);
1719 0 0 if (BE (err != REG_NOERROR, 0))
1736 19 18 : &mctx->state_log[str_idx]->nodes);
1738 18 19 if (dest_nodes->nelem == 0)
1742 19 0 if (candidates)
1747 0 19 if (BE (err != REG_NOERROR, 0))
1751 0 19 if (sctx->limits.nelem)
1755 0 0 if (BE (err != REG_NOERROR, 0))
1761 0 19 if (BE (err != REG_NOERROR, 0))
1765 19 18 if (candidates && mctx->state_log[str_idx]->has_backref)
0 19 if (candidates && mctx->state_log[str_idx]->has_backref)
1768 0 0 if (BE (err != REG_NOERROR, 0))
1783 0 19 if (BE (err != REG_NOERROR, 0))
1786 5 14 if (!state->inveclosure.alloc)
1789 0 5 if (BE (err != REG_NOERROR, 0))
1791 5 5 for (i = 0; i < dest_nodes->nelem; i++)
1795 0 5 if (BE (err != REG_NOERROR, 0))
1813 0 0 for (ecl_idx = 0; ecl_idx < inv_eclosure->nelem; ++ecl_idx)
1816 0 0 if (cur_node == node)
1818 0 0 if (IS_EPSILON_NODE (dfa->nodes[cur_node].type))
1822 0 0 ? dfa->edests[cur_node].elems[1] : REG_MISSING);
1823 0 0 if ((!re_node_set_contains (aTHX_ inv_eclosure, edst1)
1824 0 0 && re_node_set_contains (aTHX_ dest_nodes, edst1))
1825 0 0 || (REG_VALID_NONZERO_INDEX (edst2)
1826 0 0 && !re_node_set_contains (aTHX_ inv_eclosure, edst2)
1827 0 0 && re_node_set_contains (aTHX_ dest_nodes, edst2)))
1831 0 0 if (BE (err != REG_NOERROR, 0))
1833 0 0 re_node_set_free (&except_nodes);
1839 0 0 for (ecl_idx = 0; ecl_idx < inv_eclosure->nelem; ++ecl_idx)
1842 0 0 if (!re_node_set_contains (aTHX_ &except_nodes, cur_node))
1848 0 0 re_node_set_free (&except_nodes);
1862 0 0 for (lim_idx = 0; lim_idx < limits->nelem; ++lim_idx)
1880 0 0 if (src_pos == dst_pos)
1899 0 0 for (node_idx = 0; node_idx < eclosures->nelem; ++node_idx)
1905 0 0 if (bkref_idx != REG_MISSING)
1913 0 0 if (ent->node != node)
1916 0 0 if (subexp_idx < BITSET_WORD_BITS
1917 0 0 && !(ent->eps_reachable_subexps_map
1928 0 0 if (dst == from_node)
1930 0 0 if (boundaries & 1)
1939 0 0 if (cpos == -1 /* && (boundaries & 1) */)
1941 0 0 if (cpos == 0 && (boundaries & 2))
0 0 if (cpos == 0 && (boundaries & 2))
1944 0 0 if (subexp_idx < BITSET_WORD_BITS)
1948 0 0 while (ent++->more);
1953 0 0 if ((boundaries & 1) && subexp_idx == dfa->nodes[node].opr.idx)
0 0 if ((boundaries & 1) && subexp_idx == dfa->nodes[node].opr.idx)
1958 0 0 if ((boundaries & 2) && subexp_idx == dfa->nodes[node].opr.idx)
0 0 if ((boundaries & 2) && subexp_idx == dfa->nodes[node].opr.idx)
1980 0 0 if (str_idx < lim->subexp_from)
1983 0 0 if (lim->subexp_to < str_idx)
1988 0 0 boundaries |= (str_idx == lim->subexp_to) << 1;
1989 0 0 if (boundaries == 0)
2009 0 0 for (lim_idx = 0; lim_idx < limits->nelem; ++lim_idx)
2015 0 0 if (str_idx <= ent->subexp_from || ent->str_idx < str_idx)
0 0 if (str_idx <= ent->subexp_from || ent->str_idx < str_idx)
2019 0 0 if (ent->subexp_to == str_idx)
2023 0 0 for (node_idx = 0; node_idx < dest_nodes->nelem; ++node_idx)
2027 0 0 if (type == OP_OPEN_SUBEXP
2028 0 0 && subexp_idx == dfa->nodes[node].opr.idx)
2030 0 0 else if (type == OP_CLOSE_SUBEXP
2031 0 0 && subexp_idx == dfa->nodes[node].opr.idx)
2037 0 0 if (REG_VALID_INDEX (ops_node))
2041 0 0 if (BE (err != REG_NOERROR, 0))
2046 0 0 if (REG_VALID_INDEX (cls_node))
2047 0 0 for (node_idx = 0; node_idx < dest_nodes->nelem; ++node_idx)
2050 0 0 if (!re_node_set_contains (aTHX_ dfa->inveclosures + node,
2052 0 0 && !re_node_set_contains (aTHX_ dfa->eclosures + node,
2059 0 0 if (BE (err != REG_NOERROR, 0))
2067 0 0 for (node_idx = 0; node_idx < dest_nodes->nelem; ++node_idx)
2071 0 0 if (type == OP_CLOSE_SUBEXP || type == OP_OPEN_SUBEXP)
0 0 if (type == OP_CLOSE_SUBEXP || type == OP_OPEN_SUBEXP)
2073 0 0 if (subexp_idx != dfa->nodes[node].opr.idx)
2079 0 0 if (BE (err != REG_NOERROR, 0))
2099 0 0 if (first_idx == REG_MISSING)
2104 0 0 for (node_idx = 0; node_idx < candidates->nelem; ++node_idx)
2112 0 0 if (node == sctx->last_node && str_idx == sctx->last_str_idx)
0 0 if (node == sctx->last_node && str_idx == sctx->last_str_idx)
2114 0 0 if (type != OP_BACK_REF)
2127 0 0 if (entry->node != node)
2132 0 0 : dfa->edests[node].elems[0]);
2134 0 0 if (to_idx > sctx->last_str_idx
2135 0 0 || sctx->sifted_states[to_idx] == NULL
2136 0 0 || !STATE_NODE_CONTAINS (sctx->sifted_states[to_idx], dst_node)
0 0 || !STATE_NODE_CONTAINS (sctx->sifted_states[to_idx], dst_node)
2137 0 0 || check_dst_limits (aTHX_ mctx, &sctx->limits, node,
2141 0 0 if (local_sctx.sifted_states == NULL)
2145 0 0 if (BE (err != REG_NOERROR, 0))
2151 0 0 if (BE (! ok, 0))
2158 0 0 if (BE (err != REG_NOERROR, 0))
2160 0 0 if (sctx->limited_states != NULL)
2165 0 0 if (BE (err != REG_NOERROR, 0))
2174 0 0 while (enabled_idx++, entry++->more);
2178 0 0 if (local_sctx.sifted_states != NULL)
2180 0 0 re_node_set_free (&local_sctx.limits);
2197 9 0 if (naccepted > 0 && str_idx + naccepted <= max_str_idx &&
9 0 if (naccepted > 0 && str_idx + naccepted <= max_str_idx &&
9 0 if (naccepted > 0 && str_idx + naccepted <= max_str_idx &&
2198 0 9 !STATE_NODE_CONTAINS (sctx->sifted_states[str_idx + naccepted],
2228 17 44 if (BE (state->accept_mb, 0))
2231 0 17 if (BE (*err != REG_NOERROR, 0))
2248 61 19 if (BE (trtable != NULL, 1))
2252 0 19 if (BE (trtable != NULL, 1))
2259 0 0 if (IS_WORD_CONTEXT (context))
2265 0 19 if (!build_trtable (aTHX_ mctx->dfa, state))
2284 30 32 if (cur_idx > mctx->state_log_top)
2289 16 16 else if (mctx->state_log[cur_idx] == 0)
2304 0 16 if (next_state != NULL)
2309 0 0 if (BE (*err != REG_NOERROR, 0))
2325 0 16 if (table_nodes != NULL)
2326 0 0 re_node_set_free (&next_nodes);
2329 0 62 if (BE (dfa->nbackref, 0) && next_state != NULL)
0 0 if (BE (dfa->nbackref, 0) && next_state != NULL)
2336 0 0 if (BE (*err != REG_NOERROR, 0))
2340 0 0 if (next_state->has_backref)
2343 0 0 if (BE (*err != REG_NOERROR, 0))
2367 17 32 if (++cur_str_idx > max)
2371 16 16 while (mctx->state_log[cur_str_idx] == NULL);
2375 16 0 while (*err == REG_NOERROR && cur_state == NULL);
0 16 while (*err == REG_NOERROR && cur_state == NULL);
2400 0 0 for (node_idx = 0; node_idx < cur_nodes->nelem; ++node_idx)
2403 0 0 if (dfa->nodes[node].type == OP_OPEN_SUBEXP
2404 0 0 && dfa->nodes[node].opr.idx < BITSET_WORD_BITS
2405 0 0 && (dfa->used_bkref_map
2409 0 0 if (BE (err != REG_NOERROR, 0))
2467 68 17 for (i = 0; i < pstate->nodes.nelem; ++i)
2476 51 17 if (!dfa->nodes[cur_node_idx].accept_mb)
2479 0 17 if (dfa->nodes[cur_node_idx].constraint)
2484 0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (dfa->nodes[cur_node_idx].constraint,
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (dfa->nodes[cur_node_idx].constraint,
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (dfa->nodes[cur_node_idx].constraint,
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (dfa->nodes[cur_node_idx].constraint,
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (dfa->nodes[cur_node_idx].constraint,
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (dfa->nodes[cur_node_idx].constraint,
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (dfa->nodes[cur_node_idx].constraint,
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (dfa->nodes[cur_node_idx].constraint,
2492 1 16 if (naccepted == 0)
2500 0 16 if (BE (err != REG_NOERROR, 0))
2508 16 0 if (dest_state == NULL)
2514 0 0 if (BE (err != REG_NOERROR, 0))
2521 0 16 if (dest_state != NULL)
2522 0 0 re_node_set_free (&dest_nodes);
2523 0 16 if (BE (mctx->state_log[dest_idx] == NULL && err != REG_NOERROR, 0))
0 0 if (BE (mctx->state_log[dest_idx] == NULL && err != REG_NOERROR, 0))
2539 0 0 for (i = 0; i < nodes->nelem; ++i)
2548 0 0 if (node->type != OP_BACK_REF)
2551 0 0 if (node->constraint)
2555 0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
2563 0 0 if (BE (err != REG_NOERROR, 0))
2571 0 0 for (; bkc_idx < mctx->nbkref_ents; ++bkc_idx)
2577 0 0 if (bkref_ent->node != node_idx || bkref_ent->str_idx != cur_str_idx)
0 0 if (bkref_ent->node != node_idx || bkref_ent->str_idx != cur_str_idx)
2582 0 0 : dfa->eclosures + dfa->nexts[node_idx]);
2589 0 0 : mctx->state_log[cur_str_idx]->nodes.nelem);
2591 0 0 if (dest_state == NULL)
2596 0 0 if (BE (mctx->state_log[dest_str_idx] == NULL
0 0 if (BE (mctx->state_log[dest_str_idx] == NULL
2606 0 0 if (BE (err != REG_NOERROR, 0))
2608 0 0 re_node_set_free (&dest_nodes);
2613 0 0 re_node_set_free (&dest_nodes);
2614 0 0 if (BE (mctx->state_log[dest_str_idx] == NULL
0 0 if (BE (mctx->state_log[dest_str_idx] == NULL
2620 0 0 if (subexp_len == 0
2621 0 0 && mctx->state_log[cur_str_idx]->nodes.nelem > prev_nelem)
2625 0 0 if (BE (err != REG_NOERROR, 0))
2628 0 0 if (BE (err != REG_NOERROR, 0))
2653 0 0 if (cache_idx != REG_MISSING)
2658 0 0 if (entry->node == bkref_node)
2660 0 0 while (entry++->more);
2666 0 0 for (sub_top_idx = 0; sub_top_idx < mctx->nsub_tops; ++sub_top_idx)
2673 0 0 if (dfa->nodes[sub_top->node].opr.idx != subexp_num)
2680 0 0 for (sub_last_idx = 0; sub_last_idx < sub_top->nlasts; ++sub_last_idx)
2687 0 0 if (sl_str_diff > 0)
2689 0 0 if (BE (bkref_str_off + sl_str_diff > mctx->input.valid_len, 0))
2692 0 0 if (bkref_str_off + sl_str_diff > mctx->input.len)
2698 0 0 if (BE (err != REG_NOERROR, 0))
2702 0 0 if (memcmp (buf + bkref_str_off, buf + sl_str, sl_str_diff) != 0)
2715 0 0 if (err == REG_NOMATCH)
2717 0 0 if (BE (err != REG_NOERROR, 0))
2721 0 0 if (sub_last_idx < sub_top->nlasts)
2723 0 0 if (sub_last_idx > 0)
2726 0 0 for (; sl_str <= bkref_str_idx; ++sl_str)
2734 0 0 if (sl_str_off > 0)
2736 0 0 if (BE (bkref_str_off >= mctx->input.valid_len, 0))
2739 0 0 if (bkref_str_off >= mctx->input.len)
2743 0 0 if (BE (err != REG_NOERROR, 0))
2748 0 0 if (buf [bkref_str_off++] != buf[sl_str - 1])
2752 0 0 if (mctx->state_log[sl_str] == NULL)
2758 0 0 if (cls_node == REG_MISSING)
2760 0 0 if (sub_top->path == NULL)
2762 0 0 re_calloc(sub_top->path, state_array_t, sl_str - sub_top->str_idx + 1);
2769 0 0 if (err == REG_NOMATCH)
2771 0 0 if (BE (err != REG_NOERROR, 0))
2774 0 0 if (BE (sub_last == NULL, 0))
2778 0 0 if (err == REG_NOMATCH)
2802 0 0 if (err != REG_NOERROR)
2806 0 0 if (BE (err != REG_NOERROR, 0))
2826 0 0 for (cls_idx = 0; cls_idx < nodes->nelem; ++cls_idx)
2830 0 0 if (node->type == type
2831 0 0 && node->opr.idx == subexp_idx)
2857 0 0 if (BE (path->alloc < last_str + mctx->max_mb_elem_len + 1, 0))
2862 0 0 if (BE (IDX_MAX - old_alloc < incr_alloc, 0))
2865 0 0 if (BE (SIZE_MAX / sizeof (re_dfastate_t *) < new_alloc, 0))
2867 0 0 re_realloc (path->array, re_dfastate_t *, new_alloc);
2873 0 0 str_idx = path->next_idx ? path->next_idx : top_str;
2883 0 0 if (str_idx == top_str)
2886 0 0 if (BE (err != REG_NOERROR, 0))
2889 0 0 if (BE (err != REG_NOERROR, 0))
2891 0 0 re_node_set_free (&next_nodes);
2898 0 0 if (cur_state && cur_state->has_backref)
0 0 if (cur_state && cur_state->has_backref)
2901 0 0 if (BE (err != REG_NOERROR, 0))
2907 0 0 if (str_idx == top_str || (cur_state && cur_state->has_backref))
0 0 if (str_idx == top_str || (cur_state && cur_state->has_backref))
0 0 if (str_idx == top_str || (cur_state && cur_state->has_backref))
2909 0 0 if (next_nodes.nelem)
2913 0 0 if (BE (err != REG_NOERROR, 0))
2915 0 0 re_node_set_free (&next_nodes);
2920 0 0 if (BE (cur_state == NULL && err != REG_NOERROR, 0))
0 0 if (BE (cur_state == NULL && err != REG_NOERROR, 0))
2922 0 0 re_node_set_free (&next_nodes);
2928 0 0 for (null_cnt = 0; str_idx < last_str && null_cnt <= mctx->max_mb_elem_len;)
0 0 for (null_cnt = 0; str_idx < last_str && null_cnt <= mctx->max_mb_elem_len;)
2931 0 0 if (mctx->state_log[str_idx + 1])
2935 0 0 if (BE (err != REG_NOERROR, 0))
2937 0 0 re_node_set_free (&next_nodes);
2941 0 0 if (cur_state)
2946 0 0 if (BE (err != REG_NOERROR, 0))
2948 0 0 re_node_set_free (&next_nodes);
2953 0 0 if (next_nodes.nelem)
2956 0 0 if (BE (err != REG_NOERROR, 0))
2958 0 0 re_node_set_free (&next_nodes);
2963 0 0 if (BE (err != REG_NOERROR, 0))
2965 0 0 re_node_set_free (&next_nodes);
2971 0 0 if (BE (cur_state == NULL && err != REG_NOERROR, 0))
0 0 if (BE (cur_state == NULL && err != REG_NOERROR, 0))
2973 0 0 re_node_set_free (&next_nodes);
2977 0 0 null_cnt = cur_state == NULL ? null_cnt + 1 : 0;
2979 0 0 re_node_set_free (&next_nodes);
2981 0 0 : &mctx->state_log[last_str]->nodes);
2989 0 0 if (cur_nodes != NULL && re_node_set_contains (aTHX_ cur_nodes, last_node))
0 0 if (cur_nodes != NULL && re_node_set_contains (aTHX_ cur_nodes, last_node))
3016 0 0 for (cur_idx = 0; cur_idx < cur_nodes->nelem; ++cur_idx)
3026 0 0 if (dfa->nodes[cur_node].accept_mb)
3030 0 0 if (naccepted > 1)
3037 0 0 if (dest_state)
3040 0 0 if (BE (err != REG_NOERROR, 0))
3042 0 0 re_node_set_free (&union_set);
3047 0 0 if (BE (! ok, 0))
3049 0 0 re_node_set_free (&union_set);
3054 0 0 if (BE (mctx->state_log[next_idx] == NULL
0 0 if (BE (mctx->state_log[next_idx] == NULL
3057 0 0 re_node_set_free (&union_set);
3063 0 0 if (naccepted
3064 0 0 || check_node_accept (aTHX_ mctx, dfa->nodes + cur_node, str_idx))
3067 0 0 if (BE (! ok, 0))
3069 0 0 re_node_set_free (&union_set);
3074 0 0 re_node_set_free (&union_set);
3096 0 0 if (BE (err != REG_NOERROR, 0))
3101 0 0 for (idx = 0; idx < cur_nodes->nelem; ++idx)
3106 0 0 if (outside_node == REG_MISSING)
3110 0 0 if (BE (err != REG_NOERROR, 0))
3112 0 0 re_node_set_free (&new_nodes);
3121 0 0 if (BE (err != REG_NOERROR, 0))
3123 0 0 re_node_set_free (&new_nodes);
3128 0 0 re_node_set_free (cur_nodes);
3143 0 0 for (cur_node = target; !re_node_set_contains (aTHX_ dst_nodes, cur_node);)
3147 0 0 if (dfa->nodes[cur_node].type == type
3148 0 0 && dfa->nodes[cur_node].opr.idx == ex_subexp)
3150 0 0 if (type == OP_CLOSE_SUBEXP)
3153 0 0 if (BE (! ok, 0))
3159 0 0 if (BE (! ok, 0))
3161 0 0 if (dfa->edests[cur_node].nelem == 0)
3163 0 0 if (dfa->edests[cur_node].nelem == 2)
3169 0 0 if (BE (err != REG_NOERROR, 0))
3192 0 0 if (cache_idx_start == REG_MISSING)
3202 0 0 if (!re_node_set_contains (aTHX_ cur_nodes, ent->node))
3208 0 0 if (to_idx == cur_str)
3215 0 0 if (re_node_set_contains (aTHX_ cur_nodes, next_node))
3220 0 0 re_node_set_free (&new_dests);
3221 0 0 if (BE (err != REG_NOERROR || err2 != REG_NOERROR
0 0 if (BE (err != REG_NOERROR || err2 != REG_NOERROR
0 0 if (BE (err != REG_NOERROR || err2 != REG_NOERROR
0 0 if (BE (err != REG_NOERROR || err2 != REG_NOERROR
3224 0 0 err = (err != REG_NOERROR ? err
0 0 err = (err != REG_NOERROR ? err
3235 0 0 if (mctx->state_log[to_idx])
3238 0 0 if (re_node_set_contains (aTHX_ &mctx->state_log[to_idx]->nodes,
3244 0 0 if (BE (err != REG_NOERROR || ! ok, 0))
0 0 if (BE (err != REG_NOERROR || ! ok, 0))
3246 0 0 re_node_set_free (&union_set);
3247 0 0 err = err != REG_NOERROR ? err : REG_ESPACE;
3254 0 0 if (BE (err != REG_NOERROR, 0))
3258 0 0 re_node_set_free (&union_set);
3259 0 0 if (BE (mctx->state_log[to_idx] == NULL
0 0 if (BE (mctx->state_log[to_idx] == NULL
3264 0 0 while (ent++->more);
3315 2 17 if (BE (! REG_VALID_NONZERO_INDEX (ndests), 0))
3317 2 0 if (dests_node_malloced)
3318 2 0 re_free (dests_alloc);
3320 2 0 if (ndests == 0)
3329 0 17 if (BE (err != REG_NOERROR, 0))
3333 0 17 if (BE ((((SIZE_MAX - (sizeof (re_node_set) + sizeof (bitset_t)) * SBC_MAX)
3349 0 17 Newx(dest_states, ndests * 3 * sizeof (re_dfastate_t *), re_dfastate_t *);
3350 0 17 if (BE (dest_states == NULL, 0))
3353 0 0 if (dest_states_malloced)
3354 0 0 re_free (dest_states);
3355 0 0 re_node_set_free (&follows);
3356 0 0 for (i = 0; i < ndests; ++i)
3357 0 0 re_node_set_free (dests_node + i);
3358 0 0 if (dests_node_malloced)
3359 0 0 re_free (dests_alloc);
3369 17 17 for (i = 0; i < ndests; ++i)
3374 17 17 for (j = 0; j < dests_node[i].nelem; ++j)
3377 17 0 if (next_node != REG_MISSING)
3380 0 17 if (BE (err != REG_NOERROR, 0))
3385 0 17 if (BE (dest_states[i] == NULL && err != REG_NOERROR, 0))
0 0 if (BE (dest_states[i] == NULL && err != REG_NOERROR, 0))
3389 0 17 if (dest_states[i]->has_constraint)
3393 0 0 if (BE (dest_states_word[i] == NULL && err != REG_NOERROR, 0))
0 0 if (BE (dest_states_word[i] == NULL && err != REG_NOERROR, 0))
3396 0 0 if (dest_states[i] != dest_states_word[i] && dfa->mb_cur_max > 1)
0 0 if (dest_states[i] != dest_states_word[i] && dfa->mb_cur_max > 1)
3401 0 0 if (BE (dest_states_nl[i] == NULL && err != REG_NOERROR, 0))
0 0 if (BE (dest_states_nl[i] == NULL && err != REG_NOERROR, 0))
3412 17 0 if (!BE (need_word_trtable, 0))
3422 68 17 for (i = 0; i < BITSET_WORDS; ++i)
3423 926 68 for (ch = i * BITSET_WORD_BITS, elem = acceptable[i], mask = 1;
3426 269 657 if (BE (elem & 1, 0))
3430 0 269 for (j = 0; (dests_ch[j][i] & mask) == 0; ++j)
3434 0 269 if (dfa->word_char[i] & mask)
3451 0 0 for (i = 0; i < BITSET_WORDS; ++i)
3452 0 0 for (ch = i * BITSET_WORD_BITS, elem = acceptable[i], mask = 1;
3455 0 0 if (BE (elem & 1, 0))
3459 0 0 for (j = 0; (dests_ch[j][i] & mask) == 0; ++j)
3469 2 15 if (bitset_contain (aTHX_ acceptable, NEWLINE_CHAR))
3472 2 0 for (j = 0; j < ndests; ++j)
3473 2 0 if (bitset_contain (aTHX_ dests_ch[j], NEWLINE_CHAR))
3477 0 2 if (need_word_trtable)
3485 17 0 if (dest_states_malloced)
3486 17 0 re_free (dest_states);
3488 17 0 re_node_set_free (&follows);
3489 17 17 for (i = 0; i < ndests; ++i)
3490 17 0 re_node_set_free (dests_node + i);
3492 17 0 if (dests_node_malloced)
3493 17 0 re_free (dests_alloc);
3518 35 19 for (i = 0; i < cur_nodes->nelem; ++i)
3525 15 20 if (type == CHARACTER)
3527 2 18 else if (type == SIMPLE_BRACKET)
3531 0 18 else if (type == OP_PERIOD)
3534 0 0 if (dfa->mb_cur_max > 1)
3539 0 0 if (!(dfa->syntax & RE_DOT_NEWLINE))
3541 0 0 if (dfa->syntax & RE_DOT_NOT_NULL)
3545 0 18 else if (type == OP_UTF8_PERIOD)
3551 0 0 if (!(dfa->syntax & RE_DOT_NEWLINE))
3553 0 0 if (dfa->syntax & RE_DOT_NOT_NULL)
3562 0 17 if (constraint)
3564 0 0 if (constraint & NEXT_NEWLINE_CONSTRAINT)
3568 0 0 if (accepts_newline)
3573 0 0 if (constraint & NEXT_ENDBUF_CONSTRAINT)
3579 0 0 if (constraint & NEXT_WORD_CONSTRAINT)
3582 0 0 if (type == CHARACTER && !node->word_char)
0 0 if (type == CHARACTER && !node->word_char)
3588 0 0 if (dfa->mb_cur_max > 1)
3589 0 0 for (j = 0; j < BITSET_WORDS; ++j)
3593 0 0 for (j = 0; j < BITSET_WORDS; ++j)
3595 0 0 if (!any_set)
3598 0 0 if (constraint & NEXT_NOTWORD_CONSTRAINT)
3601 0 0 if (type == CHARACTER && node->word_char)
0 0 if (type == CHARACTER && node->word_char)
3607 0 0 if (dfa->mb_cur_max > 1)
3608 0 0 for (j = 0; j < BITSET_WORDS; ++j)
3612 0 0 for (j = 0; j < BITSET_WORDS; ++j)
3614 0 0 if (!any_set)
3621 0 17 for (j = 0; j < ndests; ++j)
3629 0 0 if (type == CHARACTER && !bitset_contain (aTHX_ dests_ch[j], node->opr.c))
0 0 if (type == CHARACTER && !bitset_contain (aTHX_ dests_ch[j], node->opr.c))
3634 0 0 for (k = 0; k < BITSET_WORDS; ++k)
3637 0 0 if (!has_intersec)
3642 0 0 for (k = 0; k < BITSET_WORDS; ++k)
3650 0 0 if (not_subset)
3655 0 0 if (BE (err != REG_NOERROR, 0))
3662 0 0 if (BE (! ok, 0))
3666 0 0 if (!not_consumed)
3670 17 0 if (j == ndests)
3674 0 17 if (BE (err != REG_NOERROR, 0))
3682 0 0 for (j = 0; j < ndests; ++j)
3683 0 0 re_node_set_free (dests_node + j);
3705 0 35 if (BE (node->type == OP_UTF8_PERIOD, 0))
3708 0 0 if (BE (c < 0xc2, 1))
3711 0 0 if (str_idx + 2 > input->len)
3715 0 0 if (c < 0xe0)
3716 0 0 return (d < 0x80 || d > 0xbf) ? 0 : 2;
0 0 return (d < 0x80 || d > 0xbf) ? 0 : 2;
3717 0 0 else if (c < 0xf0)
3720 0 0 if (c == 0xe0 && d < 0xa0)
0 0 if (c == 0xe0 && d < 0xa0)
3723 0 0 else if (c < 0xf8)
3726 0 0 if (c == 0xf0 && d < 0x90)
0 0 if (c == 0xf0 && d < 0x90)
3729 0 0 else if (c < 0xfc)
3732 0 0 if (c == 0xf8 && d < 0x88)
0 0 if (c == 0xf8 && d < 0x88)
3735 0 0 else if (c < 0xfe)
3738 0 0 if (c == 0xfc && d < 0x84)
0 0 if (c == 0xfc && d < 0x84)
3744 0 0 if (str_idx + char_len > input->len)
3747 0 0 for (i = 1; i < char_len; ++i)
3750 0 0 if (d < 0x80 || d > 0xbf)
0 0 if (d < 0x80 || d > 0xbf)
3757 0 35 if (node->type == OP_PERIOD)
3759 0 0 if (char_len <= 1)
3764 0 0 if ((!(dfa->syntax & RE_DOT_NEWLINE) &&
0 0 if ((!(dfa->syntax & RE_DOT_NEWLINE) &&
3765 0 0 re_string_byte_at (input, str_idx) == '\n') ||
3766 0 0 ((dfa->syntax & RE_DOT_NOT_NULL) &&
3773 1 34 if ((elem_len <= 1 && char_len <= 1) || char_len == 0)
0 1 if ((elem_len <= 1 && char_len <= 1) || char_len == 0)
0 34 if ((elem_len <= 1 && char_len <= 1) || char_len == 0)
3776 34 0 if (node->type == COMPLEX_BRACKET)
3786 34 0 wchar_t wc = ((cset->nranges || cset->nchar_classes || cset->nmbchars)
34 0 wchar_t wc = ((cset->nranges || cset->nchar_classes || cset->nmbchars)
0 34 wchar_t wc = ((cset->nranges || cset->nchar_classes || cset->nmbchars)
3790 0 34 for (i = 0; i < cset->nmbchars; ++i)
3791 0 0 if (wc == cset->mbchars[i])
3797 0 34 for (i = 0; i < cset->nchar_classes; ++i)
3800 0 0 if (rpl__iswctype (wc, wt))
3904 0 34 for (i = 0; i < cset->nranges; ++i)
3906 0 0 if (cset->range_starts[i] <= wc && wc <= cset->range_ends[i])
0 0 if (cset->range_starts[i] <= wc && wc <= cset->range_ends[i])
3914 0 34 if (!cset->non_match)
3918 0 34 if (match_len > 0)
4002 0 14 if (node->opr.c != ch)
4007 9 0 if (!bitset_contain (aTHX_ node->opr.sbcset, ch))
4013 0 0 if (ch >= ASCII_CHARS)
4018 0 0 if ((ch == '\n' && !(mctx->dfa->syntax & RE_DOT_NEWLINE))
0 0 if ((ch == '\n' && !(mctx->dfa->syntax & RE_DOT_NEWLINE))
4019 0 0 || (ch == '\0' && (mctx->dfa->syntax & RE_DOT_NOT_NULL)))
0 0 || (ch == '\0' && (mctx->dfa->syntax & RE_DOT_NOT_NULL)))
4027 0 14 if (node->constraint)
4033 0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
0 0 if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
4050 0 0 if (BE (MIN (IDX_MAX, SIZE_MAX / sizeof (re_dfastate_t *)) / 2
4058 0 0 if (BE (ret != REG_NOERROR, 0))
4061 0 0 if (mctx->state_log != NULL)
4067 0 0 re_realloc (mctx->state_log, re_dfastate_t *, pstr->bufs_len + 1);
4071 0 0 if (pstr->icase)
4074 0 0 if (pstr->mb_cur_max > 1)
4077 0 0 if (BE (ret != REG_NOERROR, 0))
4087 0 0 if (pstr->mb_cur_max > 1)
4092 0 0 if (pstr->trans != NULL)
4110 0 14 if (n > 0)
4116 0 0 if (BE (MIN (IDX_MAX, SIZE_MAX / max_object_size) < n, 0))
4119 0 0 re_malloc (mctx->bkref_ents, struct re_backref_cache_entry, n);
4120 0 0 re_malloc (mctx->sub_tops, re_sub_match_top_t *, n);
4142 0 23 for (st_idx = 0; st_idx < mctx->nsub_tops; ++st_idx)
4146 0 0 for (sl_idx = 0; sl_idx < top->nlasts; ++sl_idx)
4149 0 0 re_free (last->path.array);
4150 0 0 re_free (last);
4152 0 0 re_free (top->lasts);
4153 0 0 if (top->path)
4155 0 0 re_free (top->path->array);
4156 0 0 re_free (top->path);
4158 0 0 re_free (top);
4173 0 0 re_free (mctx->sub_tops);
4174 0 0 re_free (mctx->bkref_ents);
4187 0 0 if (mctx->nbkref_ents >= mctx->abkref_ents)
4189 0 0 re_realloc (mctx->bkref_ents, struct re_backref_cache_entry, mctx->abkref_ents * 2);
4194 0 0 if (mctx->nbkref_ents > 0
4195 0 0 && mctx->bkref_ents[mctx->nbkref_ents - 1].str_idx == str_idx)
4212 0 0 = (from == to ? -1 : 0);
4215 0 0 if (mctx->max_mb_elem_len < to - from)
4229 0 0 for (left = 0; left < right;)
4232 0 0 if (mctx->bkref_ents[mid].str_idx < str_idx)
4237 0 0 if (left < last && mctx->bkref_ents[left].str_idx == str_idx)
0 0 if (left < last && mctx->bkref_ents[left].str_idx == str_idx)
4254 0 0 if (BE (mctx->nsub_tops == mctx->asub_tops, 0))
4257 0 0 re_realloc (mctx->sub_tops, re_sub_match_top_t *, new_asub_tops);
4274 0 0 if (BE (subtop->nlasts == subtop->alasts, 0))
4277 0 0 re_realloc (subtop->lasts, re_sub_match_last_t *, new_alasts);