summaryrefslogtreecommitdiff
path: root/regexec.c
diff options
context:
space:
mode:
authorHiroya Fujinami <make.just.on@gmail.com>2023-12-30 01:08:51 +0900
committerGitHub <noreply@github.com>2023-12-30 01:08:51 +0900
commit2571d5376a38c333b8fe85f1f9b2f9c2422c0ad9 (patch)
tree1dd8d1b6d498d608d6f10c582290285d66c703e9 /regexec.c
parent0c923fed7d659e80352cc5aa69e28eea61bcc63e (diff)
Reduce `if` for decreasing counter on OP_REPEAT_INC (#9393)
This commit also reduces the warning `'stkp' may be used uninitialized in this function`.
Diffstat (limited to 'regexec.c')
-rw-r--r--regexec.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/regexec.c b/regexec.c
index 5cd9c82efd..e8035462ea 100644
--- a/regexec.c
+++ b/regexec.c
@@ -2531,6 +2531,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
#define MATCH_CACHE_DEBUG_HIT ((void) 0)
#endif
+#define MATCH_CACHE_HIT ((void) 0)
+
# define CHECK_MATCH_CACHE do {\
if (msa->match_cache_status == MATCH_CACHE_STATUS_ENABLED) {\
const OnigCacheOpcode *cache_opcode;\
@@ -2541,8 +2543,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
uint8_t match_cache_point_mask = 1 << (match_cache_point & 7);\
MATCH_CACHE_DEBUG;\
if (msa->match_cache_buf[match_cache_point_index] & match_cache_point_mask) {\
- MATCH_CACHE_DEBUG_HIT;\
- if (*pbegin == OP_REPEAT_INC) stkp->u.repeat.count--;\
+ MATCH_CACHE_DEBUG_HIT; MATCH_CACHE_HIT;\
if (cache_opcode->lookaround_nesting == 0) goto fail;\
else if (cache_opcode->lookaround_nesting < 0) {\
if (check_extended_match_cache_point(msa->match_cache_buf, match_cache_point_index, match_cache_point_mask)) {\
@@ -3814,9 +3815,15 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
/* end of repeat. Nothing to do. */
}
else if (stkp->u.repeat.count >= reg->repeat_range[mem].lower) {
+#ifdef USE_MATCH_CACHE
if (*pbegin == OP_REPEAT_INC) {
+#undef MATCH_CACHE_HIT
+#define MATCH_CACHE_HIT stkp->u.repeat.count--;
CHECK_MATCH_CACHE;
+#undef MATCH_CACHE_HIT
+#define MATCH_CACHE_HIT ((void) 0)
}
+#endif
STACK_PUSH_ALT(p, s, sprev, pkeep);
p = STACK_AT(si)->u.repeat.pcode; /* Don't use stkp after PUSH. */
}