From: K.Kosako Date: Fri, 5 Oct 2018 08:17:52 +0000 (+0900) Subject: speed improvement of sunday_quick_search_step_forward() X-Git-Tag: v6.9.1~18^2~17 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5096808308ef194082f9803cbfdb11b0f14a026d;p=onig speed improvement of sunday_quick_search_step_forward() --- diff --git a/src/regexec.c b/src/regexec.c index c1f19a4..530cc06 100644 --- a/src/regexec.c +++ b/src/regexec.c @@ -4124,12 +4124,15 @@ sunday_quick_search_step_forward(regex_t* reg, const UChar *tail; int skip, tlen1; int map_offset; + OnigEncoding enc; #ifdef ONIG_DEBUG_SEARCH fprintf(stderr, "sunday_quick_search_step_forward: text: %p, text_end: %p, text_range: %p\n", text, text_end, text_range); #endif + enc = reg->enc; + tail = target_end - 1; tlen1 = (int )(tail - target); end = text_range; @@ -4148,10 +4151,16 @@ sunday_quick_search_step_forward(regex_t* reg, } if (se + map_offset >= text_end) break; skip = reg->map[*(se + map_offset)]; +#if 0 t = s; do { - s += enclen(reg->enc, s); + s += enclen(enc, s); } while ((s - t) < skip && s < end); +#else + s += skip; + if (s < end) + s = onigenc_get_right_adjust_char_head(enc, text, s); +#endif } return (UChar* )NULL;