mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
This commit is contained in:
parent
ed269c81aa
commit
e22c4e8877
Notes:
git
2023-03-13 06:47:11 +00:00
Merged-By: makenowjust <make.just.on@gmail.com>
2 changed files with 26 additions and 4 deletions
20
regexec.c
20
regexec.c
|
@ -2835,10 +2835,16 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
|||
|
||||
CASE(OP_ANYCHAR_STAR_PEEK_NEXT) MOP_IN(OP_ANYCHAR_STAR_PEEK_NEXT);
|
||||
while (DATA_ENSURE_CHECK1) {
|
||||
DO_CACHE_MATCH_OPT(reg, stk_base, repeat_stk, msa->enable_cache_match_opt, pbegin, msa->num_cache_table, msa->num_cache_opcode, msa->cache_index_table, end - s, msa->match_cache);
|
||||
if (*p == *s) {
|
||||
DO_CACHE_MATCH_OPT(reg, stk_base, repeat_stk, msa->enable_cache_match_opt, pbegin, msa->num_cache_table, msa->num_cache_opcode, msa->cache_index_table, end - s, msa->match_cache);
|
||||
STACK_PUSH_ALT(p + 1, s, sprev, pkeep);
|
||||
}
|
||||
} else {
|
||||
/* We need to increment num_fail here, for invoking a cache optimization correctly. */
|
||||
/* Actually, the matching will be failed if we use `OP_ANYCHAR_STAR` simply in this case.*/
|
||||
#ifdef USE_CACHE_MATCH_OPT
|
||||
msa->num_fail++;
|
||||
#endif
|
||||
}
|
||||
n = enclen(encode, s, end);
|
||||
DATA_ENSURE(n);
|
||||
if (ONIGENC_IS_MBC_NEWLINE_EX(encode, s, str, end, option, 0)) goto fail;
|
||||
|
@ -2851,10 +2857,16 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
|||
|
||||
CASE(OP_ANYCHAR_ML_STAR_PEEK_NEXT)MOP_IN(OP_ANYCHAR_ML_STAR_PEEK_NEXT);
|
||||
while (DATA_ENSURE_CHECK1) {
|
||||
DO_CACHE_MATCH_OPT(reg, stk_base, repeat_stk, msa->enable_cache_match_opt, pbegin, msa->num_cache_table, msa->num_cache_opcode, msa->cache_index_table, s - str, msa->match_cache);
|
||||
if (*p == *s) {
|
||||
DO_CACHE_MATCH_OPT(reg, stk_base, repeat_stk, msa->enable_cache_match_opt, pbegin, msa->num_cache_table, msa->num_cache_opcode, msa->cache_index_table, s - str, msa->match_cache);
|
||||
STACK_PUSH_ALT(p + 1, s, sprev, pkeep);
|
||||
}
|
||||
} else {
|
||||
/* We need to increment num_fail here, for invoking a cache optimization correctly. */
|
||||
/* Actually, the matching will be failed if we use `OP_ANYCHAR_STAR_ML` simply in this case.*/
|
||||
#ifdef USE_CACHE_MATCH_OPT
|
||||
msa->num_fail++;
|
||||
#endif
|
||||
}
|
||||
n = enclen(encode, s, end);
|
||||
if (n > 1) {
|
||||
DATA_ENSURE(n);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue