Lines Matching refs:mb

59 #define NLBLOCK mb              /* Block containing newline information */
212 match_block *mb, const char *s, ...) in display_frames() argument
224 ((char *)P - (char *)(mb->match_frames))/frame_size); in display_frames()
227 for (i = 0, Q = mb->match_frames; in display_frames()
232 i, Q->group_frame_type, Q->eptr - mb->start_subject, *(Q->ecode), in display_frames()
265 do_callout(heapframe *F, match_block *mb, PCRE2_SIZE *lengthptr) in do_callout() argument
275 if (mb->callout == NULL) return 0; /* No callout function provided */ in do_callout()
293 cb = mb->cb; in do_callout()
297 cb->mark = mb->nomatch_mark; in do_callout()
298 cb->current_position = (PCRE2_SIZE)(Feptr - mb->start_subject); in do_callout()
321 rc = mb->callout(cb, mb->callout_data); in do_callout()
353 match_ref(PCRE2_SIZE offset, BOOL caseless, heapframe *F, match_block *mb, in match_ref() argument
366 if ((mb->poptions & PCRE2_MATCH_UNSET_BACKREF) != 0) in match_ref()
377 p = mb->start_subject + Fovector[offset]; in match_ref()
383 if ((mb->poptions & PCRE2_UTF) != 0) in match_ref()
399 if (eptr >= mb->end_subject) return 1; /* Partial match */ in match_ref()
423 if (eptr >= mb->end_subject) return 1; /* Partial match */ in match_ref()
426 if (TABLE_GET(cp, mb->lcc, cp) != TABLE_GET(cc, mb->lcc, cc)) in match_ref()
439 if (mb->partial != 0) in match_ref()
443 if (eptr >= mb->end_subject) return 1; /* Partial match */ in match_ref()
452 if ((PCRE2_SIZE)(mb->end_subject - eptr) < length) return 1; /* Partial */ in match_ref()
500 if (mb->partial != 0 && Feptr >= mb->end_subject && \
501 Feptr > mb->start_used_ptr) \
503 mb->hitend = TRUE; \
504 if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
508 if (mb->partial != 0 && Feptr > mb->start_used_ptr) \
510 mb->hitend = TRUE; \
511 if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; \
565 match_block *mb) in match() argument
599 BOOL utf = (mb->poptions & PCRE2_UTF) != 0; in match()
612 F = mb->match_frames; in match()
632 if (N >= mb->match_frames_top) in match()
634 PCRE2_SIZE newsize = mb->frame_vector_size * 2; in match()
637 if ((newsize / 1024) > mb->heap_limit) in match()
639 PCRE2_SIZE maxsize = ((mb->heap_limit * 1024)/frame_size) * frame_size; in match()
640 if (mb->frame_vector_size >= maxsize) return PCRE2_ERROR_HEAPLIMIT; in match()
644 new = mb->memctl.malloc(newsize, mb->memctl.memory_data); in match()
646 memcpy(new, mb->match_frames, mb->frame_vector_size); in match()
648 F = (heapframe *)((char *)new + ((char *)F - (char *)mb->match_frames)); in match()
651 if (mb->match_frames != mb->stack_frames) in match()
652 mb->memctl.free(mb->match_frames, mb->memctl.memory_data); in match()
653 mb->match_frames = new; in match()
654 mb->match_frames_top = (heapframe *)((char *)mb->match_frames + newsize); in match()
655 mb->frame_vector_size = newsize; in match()
713 Flast_group_offset = (char *)F - (char *)mb->match_frames; in match()
726 if (mb->match_call_count++ >= mb->match_limit) return PCRE2_ERROR_MATCHLIMIT; in match()
727 if (Frdepth >= mb->match_limit_depth) return PCRE2_ERROR_DEPTHLIMIT; in match()
755 N = (heapframe *)((char *)mb->match_frames + offset); in match()
762 Fovector[offset] = P->eptr - mb->start_subject; in match()
763 Fovector[offset+1] = Feptr - mb->start_subject; in match()
776 if (Feptr > mb->last_used_ptr) mb->last_used_ptr = Feptr; in match()
793 N = (heapframe *)((char *)mb->match_frames + offset); in match()
816 ((mb->moptions & PCRE2_NOTEMPTY) != 0 || in match()
817 ((mb->moptions & PCRE2_NOTEMPTY_ATSTART) != 0 && in match()
818 Fstart_match == mb->start_subject + mb->start_offset))) in match()
825 if (Feptr < mb->end_subject && in match()
826 ((mb->moptions | mb->poptions) & PCRE2_ENDANCHORED) != 0) in match()
839 mb->end_match_ptr = Feptr; /* Record where we ended */ in match()
840 mb->end_offset_top = Foffset_top; /* and how many extracts were taken */ in match()
841 mb->mark = Fmark; /* and the last success mark */ in match()
842 if (Feptr > mb->last_used_ptr) mb->last_used_ptr = Feptr; in match()
844 ovector[0] = Fstart_match - mb->start_subject; in match()
845 ovector[1] = Feptr - mb->start_subject; in match()
861 if (mb->partial != 0 && in match()
862 Feptr == mb->end_subject - 1 && in match()
867 mb->hitend = TRUE; in match()
868 if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; in match()
875 if (Feptr >= mb->end_subject) /* DO NOT merge the Feptr++ here; it must */ in match()
882 if (utf) ACROSSCHAR(Feptr < mb->end_subject, Feptr, Feptr++); in match()
894 if (Feptr >= mb->end_subject) /* DO NOT merge the Feptr++ here; it must */ in match()
914 if (Flength > (PCRE2_SIZE)(mb->end_subject - Feptr)) in match()
928 if (mb->end_subject - Feptr < 1) in match()
946 if (Feptr >= mb->end_subject) in match()
967 if (mb->lcc[fc] != TABLE_GET(cc, mb->lcc, cc)) RRETURN(MATCH_NOMATCH); in match()
990 if (TABLE_GET(Fecode[1], mb->lcc, Fecode[1]) in match()
991 != TABLE_GET(*Feptr, mb->lcc, *Feptr)) RRETURN(MATCH_NOMATCH); in match()
1003 if (Feptr >= mb->end_subject) in match()
1024 ch = TABLE_GET(ch, mb->fcc, ch); in match()
1033 if (ch == fc || (Fop == OP_NOTI && TABLE_GET(ch, mb->fcc, ch) == fc)) in match()
1161 if (Feptr <= mb->end_subject - Flength && in match()
1164 Feptr <= mb->end_subject - Loclength && in match()
1183 if (Feptr <= mb->end_subject - Flength && in match()
1186 Feptr <= mb->end_subject - Loclength && in match()
1203 if (Feptr <= mb->end_subject - Flength && in match()
1207 Feptr <= mb->end_subject - Loclength && in match()
1252 Loc = mb->fcc[Lc]; in match()
1258 Loc = TABLE_GET(Lc, mb->fcc, Lc); in match()
1264 if (Feptr >= mb->end_subject) in match()
1283 if (Feptr >= mb->end_subject) in match()
1301 if (Feptr >= mb->end_subject) in match()
1326 if (Feptr >= mb->end_subject) in match()
1343 if (Feptr >= mb->end_subject) in match()
1357 if (Feptr >= mb->end_subject) in match()
1493 Loc = TABLE_GET(Lc, mb->fcc, Lc); /* Other case from table */ in match()
1501 if (Feptr >= mb->end_subject) in match()
1517 if (Feptr >= mb->end_subject) in match()
1540 if (Feptr >= mb->end_subject) in match()
1559 if (Feptr >= mb->end_subject) in match()
1584 if (Feptr >= mb->end_subject) in match()
1614 if (Feptr >= mb->end_subject) in match()
1643 if (Feptr >= mb->end_subject) in match()
1658 if (Feptr >= mb->end_subject) in match()
1680 if (Feptr >= mb->end_subject) in match()
1698 if (Feptr >= mb->end_subject) in match()
1722 if (Feptr >= mb->end_subject) in match()
1751 if (Feptr >= mb->end_subject) in match()
1840 if (Feptr >= mb->end_subject) in match()
1860 if (Feptr >= mb->end_subject) in match()
1894 if (Feptr >= mb->end_subject) in match()
1917 if (Feptr >= mb->end_subject) in match()
1948 if (Feptr >= mb->end_subject) in match()
1983 if (Feptr >= mb->end_subject) in match()
2075 if (Feptr >= mb->end_subject) in match()
2098 if (Feptr >= mb->end_subject) in match()
2117 if (Feptr >= mb->end_subject) in match()
2165 if (Feptr >= mb->end_subject) in match()
2171 if (CHMAX_255(fc) && (mb->ctypes[fc] & ctype_digit) != 0) in match()
2177 if (Feptr >= mb->end_subject) in match()
2183 if (!CHMAX_255(fc) || (mb->ctypes[fc] & ctype_digit) == 0) in match()
2189 if (Feptr >= mb->end_subject) in match()
2195 if (CHMAX_255(fc) && (mb->ctypes[fc] & ctype_space) != 0) in match()
2201 if (Feptr >= mb->end_subject) in match()
2207 if (!CHMAX_255(fc) || (mb->ctypes[fc] & ctype_space) == 0) in match()
2213 if (Feptr >= mb->end_subject) in match()
2219 if (CHMAX_255(fc) && (mb->ctypes[fc] & ctype_word) != 0) in match()
2225 if (Feptr >= mb->end_subject) in match()
2231 if (!CHMAX_255(fc) || (mb->ctypes[fc] & ctype_word) == 0) in match()
2237 if (Feptr >= mb->end_subject) in match()
2248 if (Feptr >= mb->end_subject) in match()
2265 if (mb->bsr_convention == PCRE2_BSR_ANYCRLF) RRETURN(MATCH_NOMATCH); in match()
2272 if (Feptr >= mb->end_subject) in match()
2287 if (Feptr >= mb->end_subject) in match()
2302 if (Feptr >= mb->end_subject) in match()
2317 if (Feptr >= mb->end_subject) in match()
2340 if (Feptr >= mb->end_subject) in match()
2447 if (Feptr >= mb->end_subject) in match()
2455 Feptr = PRIV(extuni)(fc, Feptr, mb->start_subject, mb->end_subject, utf, in match()
2558 if (Feptr >= mb->end_subject) in match()
2571 if (Feptr >= mb->end_subject) in match()
2588 if (Feptr >= mb->end_subject) in match()
2602 if (Feptr >= mb->end_subject) in match()
2616 if (Feptr >= mb->end_subject) in match()
2631 if (Feptr >= mb->end_subject) in match()
2651 if (Feptr >= mb->end_subject) in match()
2676 if (Feptr >= mb->end_subject) in match()
2693 if (Feptr >= mb->end_subject) in match()
2719 if (Feptr >= mb->end_subject) in match()
2746 if (Feptr >= mb->end_subject) in match()
2754 Feptr = PRIV(extuni)(fc, Feptr, mb->start_subject, in match()
2755 mb->end_subject, utf, NULL); in match()
2771 if (Feptr >= mb->end_subject) in match()
2777 if (mb->partial != 0 && in match()
2778 Feptr + 1 >= mb->end_subject && in match()
2783 mb->hitend = TRUE; in match()
2784 if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; in match()
2787 ACROSSCHAR(Feptr < mb->end_subject, Feptr, Feptr++); in match()
2794 if (Feptr >= mb->end_subject) in match()
2800 ACROSSCHAR(Feptr < mb->end_subject, Feptr, Feptr++); in match()
2805 if (Feptr > mb->end_subject - Lmin) RRETURN(MATCH_NOMATCH); in match()
2812 if (Feptr >= mb->end_subject) in match()
2823 if (Feptr < mb->end_subject && UCHAR21(Feptr) == CHAR_LF) Feptr++; in match()
2836 if (mb->bsr_convention == PCRE2_BSR_ANYCRLF) RRETURN(MATCH_NOMATCH); in match()
2845 if (Feptr >= mb->end_subject) in match()
2862 if (Feptr >= mb->end_subject) in match()
2879 if (Feptr >= mb->end_subject) in match()
2896 if (Feptr >= mb->end_subject) in match()
2913 if (Feptr >= mb->end_subject) in match()
2919 if (fc < 128 && (mb->ctypes[fc] & ctype_digit) != 0) in match()
2928 if (Feptr >= mb->end_subject) in match()
2934 if (cc >= 128 || (mb->ctypes[cc] & ctype_digit) == 0) in match()
2945 if (Feptr >= mb->end_subject) in match()
2951 if (cc < 128 && (mb->ctypes[cc] & ctype_space) != 0) in match()
2954 ACROSSCHAR(Feptr < mb->end_subject, Feptr, Feptr++); in match()
2962 if (Feptr >= mb->end_subject) in match()
2968 if (cc >= 128 || (mb->ctypes[cc] & ctype_space) == 0) in match()
2979 if (Feptr >= mb->end_subject) in match()
2985 if (cc < 128 && (mb->ctypes[cc] & ctype_word) != 0) in match()
2988 ACROSSCHAR(Feptr < mb->end_subject, Feptr, Feptr++); in match()
2996 if (Feptr >= mb->end_subject) in match()
3002 if (cc >= 128 || (mb->ctypes[cc] & ctype_word) == 0) in match()
3024 if (Feptr >= mb->end_subject) in match()
3030 if (mb->partial != 0 && in match()
3031 Feptr + 1 >= mb->end_subject && in match()
3036 mb->hitend = TRUE; in match()
3037 if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; in match()
3044 if (Feptr > mb->end_subject - Lmin) in match()
3068 if (Feptr >= mb->end_subject) in match()
3078 if (Feptr < mb->end_subject && *Feptr == CHAR_LF) Feptr++; in match()
3091 if (mb->bsr_convention == PCRE2_BSR_ANYCRLF) RRETURN(MATCH_NOMATCH); in match()
3100 if (Feptr >= mb->end_subject) in match()
3120 if (Feptr >= mb->end_subject) in match()
3140 if (Feptr >= mb->end_subject) in match()
3160 if (Feptr >= mb->end_subject) in match()
3180 if (Feptr >= mb->end_subject) in match()
3185 if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_digit) != 0) in match()
3194 if (Feptr >= mb->end_subject) in match()
3199 if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_digit) == 0) in match()
3208 if (Feptr >= mb->end_subject) in match()
3213 if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_space) != 0) in match()
3222 if (Feptr >= mb->end_subject) in match()
3227 if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_space) == 0) in match()
3236 if (Feptr >= mb->end_subject) in match()
3241 if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_word) != 0) in match()
3250 if (Feptr >= mb->end_subject) in match()
3255 if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_word) == 0) in match()
3286 if (Feptr >= mb->end_subject) in match()
3303 if (Feptr >= mb->end_subject) in match()
3323 if (Feptr >= mb->end_subject) in match()
3340 if (Feptr >= mb->end_subject) in match()
3357 if (Feptr >= mb->end_subject) in match()
3375 if (Feptr >= mb->end_subject) in match()
3399 if (Feptr >= mb->end_subject) in match()
3427 if (Feptr >= mb->end_subject) in match()
3448 if (Feptr >= mb->end_subject) in match()
3477 if (Feptr >= mb->end_subject) in match()
3506 if (Feptr >= mb->end_subject) in match()
3514 Feptr = PRIV(extuni)(fc, Feptr, mb->start_subject, mb->end_subject, in match()
3533 if (Feptr >= mb->end_subject) in match()
3543 if (mb->partial != 0 && /* Take care with CRLF partial */ in match()
3544 Feptr >= mb->end_subject && in match()
3549 mb->hitend = TRUE; in match()
3550 if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; in match()
3564 if (Feptr < mb->end_subject && UCHAR21(Feptr) == CHAR_LF) Feptr++; in match()
3577 if (mb->bsr_convention == PCRE2_BSR_ANYCRLF) in match()
3616 if (fc < 256 && (mb->ctypes[fc] & ctype_digit) != 0) in match()
3621 if (fc >= 256 || (mb->ctypes[fc] & ctype_digit) == 0) in match()
3626 if (fc < 256 && (mb->ctypes[fc] & ctype_space) != 0) in match()
3631 if (fc >= 256 || (mb->ctypes[fc] & ctype_space) == 0) in match()
3636 if (fc < 256 && (mb->ctypes[fc] & ctype_word) != 0) in match()
3641 if (fc >= 256 || (mb->ctypes[fc] & ctype_word) == 0) in match()
3660 if (Feptr >= mb->end_subject) in match()
3671 if (mb->partial != 0 && /* Take care with CRLF partial */ in match()
3672 Feptr >= mb->end_subject && in match()
3677 mb->hitend = TRUE; in match()
3678 if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; in match()
3692 if (Feptr < mb->end_subject && *Feptr == CHAR_LF) Feptr++; in match()
3705 if (mb->bsr_convention == PCRE2_BSR_ANYCRLF) in match()
3760 if (MAX_255(fc) && (mb->ctypes[fc] & ctype_digit) != 0) in match()
3765 if (!MAX_255(fc) || (mb->ctypes[fc] & ctype_digit) == 0) in match()
3770 if (MAX_255(fc) && (mb->ctypes[fc] & ctype_space) != 0) in match()
3775 if (!MAX_255(fc) || (mb->ctypes[fc] & ctype_space) == 0) in match()
3780 if (MAX_255(fc) && (mb->ctypes[fc] & ctype_word) != 0) in match()
3785 if (!MAX_255(fc) || (mb->ctypes[fc] & ctype_word) == 0) in match()
3813 if (Feptr >= mb->end_subject) in match()
3829 if (Feptr >= mb->end_subject) in match()
3848 if (Feptr >= mb->end_subject) in match()
3864 if (Feptr >= mb->end_subject) in match()
3880 if (Feptr >= mb->end_subject) in match()
3897 if (Feptr >= mb->end_subject) in match()
3920 if (Feptr >= mb->end_subject) in match()
3948 if (Feptr >= mb->end_subject) in match()
3967 if (Feptr >= mb->end_subject) in match()
3990 if (Feptr >= mb->end_subject) in match()
4033 if (Feptr >= mb->end_subject) in match()
4041 Feptr = PRIV(extuni)(fc, Feptr, mb->start_subject, mb->end_subject, in match()
4105 if (Feptr >= mb->end_subject) in match()
4111 if (mb->partial != 0 && /* Take care with CRLF partial */ in match()
4112 Feptr + 1 >= mb->end_subject && in match()
4117 mb->hitend = TRUE; in match()
4118 if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; in match()
4121 ACROSSCHAR(Feptr < mb->end_subject, Feptr, Feptr++); in match()
4130 if (Feptr >= mb->end_subject) in match()
4136 ACROSSCHAR(Feptr < mb->end_subject, Feptr, Feptr++); in match()
4141 Feptr = mb->end_subject; /* Unlimited UTF-8 repeat */ in match()
4150 if (fc > (uint32_t)(mb->end_subject - Feptr)) in match()
4152 Feptr = mb->end_subject; in match()
4162 if (Feptr >= mb->end_subject) in match()
4170 if (++Feptr >= mb->end_subject) break; in match()
4176 (mb->bsr_convention == PCRE2_BSR_ANYCRLF || in match()
4194 if (Feptr >= mb->end_subject) in match()
4216 if (Feptr >= mb->end_subject) in match()
4236 if (Feptr >= mb->end_subject) in match()
4242 if (fc < 256 && (mb->ctypes[fc] & ctype_digit) != 0) break; in match()
4251 if (Feptr >= mb->end_subject) in match()
4257 if (fc >= 256 ||(mb->ctypes[fc] & ctype_digit) == 0) break; in match()
4266 if (Feptr >= mb->end_subject) in match()
4272 if (fc < 256 && (mb->ctypes[fc] & ctype_space) != 0) break; in match()
4281 if (Feptr >= mb->end_subject) in match()
4287 if (fc >= 256 ||(mb->ctypes[fc] & ctype_space) == 0) break; in match()
4296 if (Feptr >= mb->end_subject) in match()
4302 if (fc < 256 && (mb->ctypes[fc] & ctype_word) != 0) break; in match()
4311 if (Feptr >= mb->end_subject) in match()
4317 if (fc >= 256 || (mb->ctypes[fc] & ctype_word) == 0) break; in match()
4354 if (Feptr >= mb->end_subject) in match()
4360 if (mb->partial != 0 && /* Take care with CRLF partial */ in match()
4361 Feptr + 1 >= mb->end_subject && in match()
4366 mb->hitend = TRUE; in match()
4367 if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; in match()
4376 if (fc > (uint32_t)(mb->end_subject - Feptr)) in match()
4378 Feptr = mb->end_subject; in match()
4387 if (Feptr >= mb->end_subject) in match()
4395 if (++Feptr >= mb->end_subject) break; in match()
4400 if (fc != CHAR_LF && (mb->bsr_convention == PCRE2_BSR_ANYCRLF || in match()
4414 if (Feptr >= mb->end_subject) in match()
4435 if (Feptr >= mb->end_subject) in match()
4456 if (Feptr >= mb->end_subject) in match()
4477 if (Feptr >= mb->end_subject) in match()
4498 if (Feptr >= mb->end_subject) in match()
4503 if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_digit) != 0) in match()
4512 if (Feptr >= mb->end_subject) in match()
4517 if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_digit) == 0) in match()
4526 if (Feptr >= mb->end_subject) in match()
4531 if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_space) != 0) in match()
4540 if (Feptr >= mb->end_subject) in match()
4545 if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_space) == 0) in match()
4554 if (Feptr >= mb->end_subject) in match()
4559 if (MAX_255(*Feptr) && (mb->ctypes[*Feptr] & ctype_word) != 0) in match()
4568 if (Feptr >= mb->end_subject) in match()
4573 if (!MAX_255(*Feptr) || (mb->ctypes[*Feptr] & ctype_word) == 0) in match()
4624 PCRE2_SPTR slot = mb->name_table + GET2(Fecode, 1) * mb->name_entry_size; in match()
4631 slot += mb->name_entry_size; in match()
4672 rrc = match_ref(Loffset, Lcaseless, F, mb, &length); in match()
4675 if (rrc > 0) Feptr = mb->end_subject; /* Partial match */ in match()
4697 if (Lmin == 0 || (mb->poptions & PCRE2_MATCH_UNSET_BACKREF) != 0) in match()
4706 rrc = match_ref(Loffset, Lcaseless, F, mb, &slength); in match()
4709 if (rrc > 0) Feptr = mb->end_subject; /* Partial match */ in match()
4730 rrc = match_ref(Loffset, Lcaseless, F, mb, &slength); in match()
4733 if (rrc > 0) Feptr = mb->end_subject; /* Partial match */ in match()
4754 rrc = match_ref(Loffset, Lcaseless, F, mb, &slength); in match()
4760 if (rrc > 0 && mb->partial != 0 && in match()
4761 mb->end_subject > mb->start_used_ptr) in match()
4763 mb->hitend = TRUE; in match()
4764 if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; in match()
4805 (void)match_ref(Loffset, Lcaseless, F, mb, &slength); in match()
4935 if (mb->verb_ecode_ptr < next_ecode && in match()
4975 if (mb->hasthen || Frdepth == 0) in match()
5028 if (mb->verb_ecode_ptr < next_ecode && in match()
5050 bracode = mb->start_code + GET(Fecode, 1); in match()
5051 number = (bracode == mb->start_code)? 0 : GET2(bracode, 1 + LINK_SIZE); in match()
5062 N = (heapframe *)((char *)mb->match_frames + offset); in match()
5097 mb->verb_current_recurse == (Lframe_type ^ GF_RECURSE)) in match()
5099 if (rrc == MATCH_THEN && mb->verb_ecode_ptr < next_ecode && in match()
5209 rrc = do_callout(F, mb, &length); in match()
5242 rrc = do_callout(F, mb, &length); in match()
5270 PCRE2_SPTR slot = mb->name_table + GET2(Fecode, 1) * mb->name_entry_size; in match()
5276 slot += mb->name_entry_size; in match()
5289 PCRE2_SPTR slot = mb->name_table + GET2(Fecode, 1) * mb->name_entry_size; in match()
5295 slot += mb->name_entry_size; in match()
5413 if (Feptr <= mb->start_subject) RRETURN(MATCH_NOMATCH); in match()
5424 if ((ptrdiff_t)number > Feptr - mb->start_subject) RRETURN(MATCH_NOMATCH); in match()
5430 if (Feptr < mb->start_used_ptr) mb->start_used_ptr = Feptr; in match()
5461 N = (heapframe *)((char *)mb->match_frames + Flast_group_offset); in match()
5468 (char *)P->eptr - (char *)mb->start_subject); in match()
5503 if (Feptr > mb->last_used_ptr) mb->last_used_ptr = Feptr; in match()
5558 Fovector[offset] = P->eptr - mb->start_subject; in match()
5559 Fovector[offset+1] = Feptr - mb->start_subject; in match()
5611 if (Feptr != mb->start_subject || (mb->moptions & PCRE2_NOTBOL) != 0) in match()
5617 if (Feptr != mb->start_subject) RRETURN(MATCH_NOMATCH); in match()
5625 if ((mb->moptions & PCRE2_NOTEOL) != 0) RRETURN(MATCH_NOMATCH); in match()
5626 if ((mb->poptions & PCRE2_DOLLAR_ENDONLY) == 0) goto ASSERT_NL_OR_EOS; in match()
5632 if (Feptr < mb->end_subject) RRETURN(MATCH_NOMATCH); in match()
5641 if (Feptr < mb->end_subject && in match()
5642 (!IS_NEWLINE(Feptr) || Feptr != mb->end_subject - mb->nllen)) in match()
5644 if (mb->partial != 0 && in match()
5645 Feptr + 1 >= mb->end_subject && in match()
5650 mb->hitend = TRUE; in match()
5651 if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; in match()
5670 if ((mb->moptions & PCRE2_NOTBOL) != 0 && Feptr == mb->start_subject) in match()
5672 if (Feptr != mb->start_subject && in match()
5673 ((Feptr == mb->end_subject && in match()
5674 (mb->poptions & PCRE2_ALT_CIRCUMFLEX) == 0) || in match()
5684 if (Feptr < mb->end_subject) in match()
5688 if (mb->partial != 0 && in match()
5689 Feptr + 1 >= mb->end_subject && in match()
5694 mb->hitend = TRUE; in match()
5695 if (mb->partial > 1) return PCRE2_ERROR_PARTIAL; in match()
5702 if ((mb->moptions & PCRE2_NOTEOL) != 0) RRETURN(MATCH_NOMATCH); in match()
5713 if (Feptr != mb->start_subject + mb->start_offset) RRETURN(MATCH_NOMATCH); in match()
5736 if (Feptr == mb->start_subject) prev_is_word = FALSE; else in match()
5748 if (lastptr < mb->start_used_ptr) mb->start_used_ptr = lastptr; in match()
5750 if ((mb->poptions & PCRE2_UCP) != 0) in match()
5760 prev_is_word = CHMAX_255(fc) && (mb->ctypes[fc] & ctype_word) != 0; in match()
5765 if (Feptr >= mb->end_subject) in match()
5776 FORWARDCHARTEST(nextptr, mb->end_subject); in match()
5782 if (nextptr > mb->last_used_ptr) mb->last_used_ptr = nextptr; in match()
5784 if ((mb->poptions & PCRE2_UCP) != 0) in match()
5794 cur_is_word = CHMAX_255(fc) && (mb->ctypes[fc] & ctype_word) != 0; in match()
5810 Fmark = mb->nomatch_mark = Fecode + 2; in match()
5821 PRIV(strcmp)(Fecode + 2, mb->verb_skip_ptr) == 0) in match()
5823 mb->verb_skip_ptr = Feptr; /* Pass back current position */ in match()
5838 mb->verb_current_recurse = Fcurrent_recurse; in match()
5842 Fmark = mb->nomatch_mark = Fecode + 2; in match()
5845 mb->verb_current_recurse = Fcurrent_recurse; in match()
5851 mb->verb_current_recurse = Fcurrent_recurse; in match()
5855 Fmark = mb->nomatch_mark = Fecode + 2; in match()
5858 mb->verb_current_recurse = Fcurrent_recurse; in match()
5864 mb->verb_skip_ptr = Feptr; /* Pass back current position */ in match()
5865 mb->verb_current_recurse = Fcurrent_recurse; in match()
5877 mb->skip_arg_count++; in match()
5878 if (mb->skip_arg_count <= mb->ignore_skip_arg) in match()
5891 mb->verb_skip_ptr = Fecode + 2; in match()
5892 mb->verb_current_recurse = Fcurrent_recurse; in match()
5901 mb->verb_ecode_ptr = Fecode; in match()
5902 mb->verb_current_recurse = Fcurrent_recurse; in match()
5906 Fmark = mb->nomatch_mark = Fecode + 2; in match()
5909 mb->verb_ecode_ptr = Fecode; in match()
5910 mb->verb_current_recurse = Fcurrent_recurse; in match()
5941 mb->cb->callout_flags |= PCRE2_CALLOUT_BACKTRACK; /* Note for callouts */ in match()
6033 match_block *mb = &actual_match_block; in pcre2_match() local
6041 mb->stack_frames = (heapframe *)stack_frames_vector; in pcre2_match()
6089 mb->partial = ((options & PCRE2_PARTIAL_HARD) != 0)? 2 : in pcre2_match()
6095 if (mb->partial != 0 && in pcre2_match()
6182 mb->memctl = re->memctl; in pcre2_match()
6184 else mb->memctl = mcontext->memctl; in pcre2_match()
6195 mb->cb = &cb; in pcre2_match()
6203 mb->callout = mcontext->callout; in pcre2_match()
6204 mb->callout_data = mcontext->callout_data; in pcre2_match()
6206 mb->start_subject = subject; in pcre2_match()
6207 mb->start_offset = start_offset; in pcre2_match()
6208 mb->end_subject = end_subject; in pcre2_match()
6209 mb->hasthen = (re->flags & PCRE2_HASTHEN) != 0; in pcre2_match()
6211 mb->moptions = options; /* Match options */ in pcre2_match()
6212 mb->poptions = re->overall_options; /* Pattern options */ in pcre2_match()
6214 mb->ignore_skip_arg = 0; in pcre2_match()
6215 mb->mark = mb->nomatch_mark = NULL; /* In case never set */ in pcre2_match()
6216 mb->hitend = FALSE; in pcre2_match()
6221 mb->name_table = (PCRE2_UCHAR *)((uint8_t *)re + sizeof(pcre2_real_code)); in pcre2_match()
6222 mb->name_count = re->name_count; in pcre2_match()
6223 mb->name_entry_size = re->name_entry_size; in pcre2_match()
6224 mb->start_code = mb->name_table + re->name_count * re->name_entry_size; in pcre2_match()
6228 mb->bsr_convention = re->bsr_convention; in pcre2_match()
6229 mb->nltype = NLTYPE_FIXED; in pcre2_match()
6233 mb->nllen = 1; in pcre2_match()
6234 mb->nl[0] = CHAR_CR; in pcre2_match()
6238 mb->nllen = 1; in pcre2_match()
6239 mb->nl[0] = CHAR_NL; in pcre2_match()
6243 mb->nllen = 1; in pcre2_match()
6244 mb->nl[0] = CHAR_NUL; in pcre2_match()
6248 mb->nllen = 2; in pcre2_match()
6249 mb->nl[0] = CHAR_CR; in pcre2_match()
6250 mb->nl[1] = CHAR_NL; in pcre2_match()
6254 mb->nltype = NLTYPE_ANY; in pcre2_match()
6258 mb->nltype = NLTYPE_ANYCRLF; in pcre2_match()
6282 mb->heap_limit = (mcontext->heap_limit < re->limit_heap)? in pcre2_match()
6285 mb->match_limit = (mcontext->match_limit < re->limit_match)? in pcre2_match()
6288 mb->match_limit_depth = (mcontext->depth_limit < re->limit_depth)? in pcre2_match()
6298 mb->match_frames = mb->stack_frames; /* Initial frame vector on the stack */ in pcre2_match()
6299 mb->frame_vector_size = ((START_FRAMES_SIZE/frame_size) * frame_size); in pcre2_match()
6303 mb->frame_vector_size = frame_size * 10; in pcre2_match()
6304 if ((mb->frame_vector_size / 1024) > mb->heap_limit) in pcre2_match()
6306 if (frame_size > mb->heap_limit * 1024) return PCRE2_ERROR_HEAPLIMIT; in pcre2_match()
6307 mb->frame_vector_size = ((mb->heap_limit * 1024)/frame_size) * frame_size; in pcre2_match()
6309 mb->match_frames = mb->memctl.malloc(mb->frame_vector_size, in pcre2_match()
6310 mb->memctl.memory_data); in pcre2_match()
6311 if (mb->match_frames == NULL) return PCRE2_ERROR_NOMEMORY; in pcre2_match()
6314 mb->match_frames_top = in pcre2_match()
6315 (heapframe *)((char *)mb->match_frames + mb->frame_vector_size); in pcre2_match()
6320 memset((char *)(mb->match_frames) + offsetof(heapframe, ovector), 0xff, in pcre2_match()
6325 mb->lcc = re->tables + lcc_offset; in pcre2_match()
6326 mb->fcc = re->tables + fcc_offset; in pcre2_match()
6327 mb->ctypes = re->tables + ctypes_offset; in pcre2_match()
6338 first_cu2 = TABLE_GET(first_cu, mb->fcc, first_cu); in pcre2_match()
6356 req_cu2 = TABLE_GET(req_cu, mb->fcc, req_cu); in pcre2_match()
6488 if (!mb->partial && start_match >= mb->end_subject) in pcre2_match()
6500 if (start_match > mb->start_subject + start_offset) in pcre2_match()
6521 (mb->nltype == NLTYPE_ANY || mb->nltype == NLTYPE_ANYCRLF) && in pcre2_match()
6547 if (!mb->partial && start_match >= mb->end_subject) in pcre2_match()
6557 end_subject = mb->end_subject; in pcre2_match()
6561 if (!mb->partial) in pcre2_match()
6677 mb->start_used_ptr = start_match; in pcre2_match()
6678 mb->last_used_ptr = start_match; in pcre2_match()
6679 mb->match_call_count = 0; in pcre2_match()
6680 mb->end_offset_top = 0; in pcre2_match()
6681 mb->skip_arg_count = 0; in pcre2_match()
6683 rc = match(start_match, mb->start_code, match_data->ovector, in pcre2_match()
6684 match_data->oveccount, re->top_bracket, frame_size, mb); in pcre2_match()
6686 if (mb->hitend && start_partial == NULL) in pcre2_match()
6688 start_partial = mb->start_used_ptr; in pcre2_match()
6703 mb->ignore_skip_arg = mb->skip_arg_count; in pcre2_match()
6710 if (mb->verb_skip_ptr > start_match) in pcre2_match()
6712 new_start_match = mb->verb_skip_ptr; in pcre2_match()
6723 mb->ignore_skip_arg = 0; in pcre2_match()
6776 (mb->nltype == NLTYPE_ANY || in pcre2_match()
6777 mb->nltype == NLTYPE_ANYCRLF || in pcre2_match()
6778 mb->nllen == 2)) in pcre2_match()
6781 mb->mark = NULL; /* Reset for start of next match attempt */ in pcre2_match()
6806 if (mb->match_frames != mb->stack_frames) in pcre2_match()
6807 mb->memctl.free(mb->match_frames, mb->memctl.memory_data); in pcre2_match()
6813 match_data->mark = mb->mark; in pcre2_match()
6822 match_data->rc = ((int)mb->end_offset_top >= 2 * match_data->oveccount)? in pcre2_match()
6823 0 : (int)mb->end_offset_top/2 + 1; in pcre2_match()
6825 match_data->leftchar = mb->start_used_ptr - subject; in pcre2_match()
6826 match_data->rightchar = ((mb->last_used_ptr > mb->end_match_ptr)? in pcre2_match()
6827 mb->last_used_ptr : mb->end_match_ptr) - subject; in pcre2_match()
6835 match_data->mark = mb->nomatch_mark; in pcre2_match()