summaryrefslogtreecommitdiff
path: root/regexec.c
diff options
context:
space:
mode:
Diffstat (limited to 'regexec.c')
-rw-r--r--regexec.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/regexec.c b/regexec.c
index f52e55f879..a70fbdef91 100644
--- a/regexec.c
+++ b/regexec.c
@@ -1561,9 +1561,6 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
mem_start_stk = (OnigStackIndex* )(repeat_stk + reg->num_repeat);
mem_end_stk = mem_start_stk + (num_mem + 1);
- for (i = 0; i <= num_mem; i++) {
- mem_start_stk[i] = mem_end_stk[i] = INVALID_STACK_INDEX;
- }
#else /* USE_SUBEXP_CALL */
/* Stack #0 not is used. */
n = reg->num_repeat + reg->num_mem * 2;
@@ -1579,10 +1576,14 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
mem_start_stk[1]..mem_start_stk[num_mem] */
mem_end_stk--; /* for index start from 1,
mem_end_stk[1]..mem_end_stk[num_mem] */
- for (i = 1; i <= num_mem; i++) {
- mem_start_stk[i] = mem_end_stk[i] = INVALID_STACK_INDEX;
- }
#endif /* USE_SUBEXP_CALL */
+ {
+ OnigStackIndex *pp = mem_start_stk;
+ for (; pp < (repeat_stk + n); pp+=2) {
+ pp[0] = INVALID_STACK_INDEX;
+ pp[1] = INVALID_STACK_INDEX;
+ }
+ }
#ifdef ONIG_DEBUG_MATCH
fprintf(stderr, "match_at: str: %"PRIdPTR" (%p), end: %"PRIdPTR" (%p), start: %"PRIdPTR" (%p), sprev: %"PRIdPTR" (%p)\n",