From: K.Kosako Date: Sun, 30 Jul 2017 08:17:10 +0000 (+0900) Subject: add UPDATE_VAR_RIGHT_RANGE_INIT (UpdateVarType) X-Git-Tag: v6.5.0^2~23 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ea6f2749044d8bd03063b50a84eb24a791fde23b;p=onig add UPDATE_VAR_RIGHT_RANGE_INIT (UpdateVarType) --- diff --git a/src/regexec.c b/src/regexec.c index 94850e6..a817e0b 100644 --- a/src/regexec.c +++ b/src/regexec.c @@ -1225,6 +1225,11 @@ static int string_cmp_ic(OnigEncoding enc, int case_fold_flag, #define DATA_ENSURE_CHECK(n) (s + (n) <= right_range) #define DATA_ENSURE(n) if (s + (n) > right_range) goto fail +#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE +#define INIT_RIGHT_RANGE right_range = (UChar* )in_right_range +#else +#define INIT_RIGHT_RANGE right_range = (UChar* )end +#endif #ifdef USE_CAPTURE_HISTORY static int @@ -1519,11 +1524,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, STACK_PUSH_ENSURED(STK_ALT, FinishCode); /* bottom stack */ best_len = ONIG_MISMATCH; keep = s = (UChar* )sstart; -#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE - right_range = (UChar* )in_right_range; -#else - right_range = (UChar* )end; -#endif + INIT_RIGHT_RANGE; while (1) { #ifdef ONIG_DEBUG_MATCH @@ -3003,6 +3004,9 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, case UPDATE_VAR_RIGHT_RANGE_FROM_STACK: STACK_GET_SAVE_VAL_TYPE_LAST_ID(SAVE_RIGHT_RANGE, mem, right_range); break; + case UPDATE_VAR_RIGHT_RANGE_INIT: + INIT_RIGHT_RANGE; + break; case UPDATE_VAR_RIGHT_RANGE_SPREV: right_range = sprev; break; diff --git a/src/regint.h b/src/regint.h index b96b073..a96d7ec 100644 --- a/src/regint.h +++ b/src/regint.h @@ -568,7 +568,8 @@ enum UpdateVarType { UPDATE_VAR_S_FROM_STACK = 1, UPDATE_VAR_RIGHT_RANGE_FROM_STACK = 2, UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK = 3, - UPDATE_VAR_RIGHT_RANGE_SPREV = 4, + UPDATE_VAR_RIGHT_RANGE_INIT = 4, + UPDATE_VAR_RIGHT_RANGE_SPREV = 5, }; typedef int RelAddrType;