} while(0)
#define STACK_PUSH_SAVE_VAL(sid, stype, sval) do {\
- /* STACK_ENSURE(1) */;\
+ STACK_ENSURE(1);\
stk->type = STK_SAVE_VAL;\
stk->u.val.id = (sid);\
stk->u.val.type = (stype);\
StackIndex si;
StackIndex *repeat_stk;
StackIndex *mem_start_stk, *mem_end_stk;
- StackIndex right_range_index;
UChar* keep;
#ifdef USE_COMBINATION_EXPLOSION_CHECK
int scv;
#else
right_range = (UChar* )end;
#endif
- right_range_index = INVALID_STACK_INDEX;
while (1) {
#ifdef ONIG_DEBUG_MATCH
SaveType type;
GET_SAVE_TYPE_INC(type, p);
GET_MEMNUM_INC(mem, p); /* mem: save id */
- STACK_ENSURE(1); /* for GET_STACK_INDEX() */
switch ((enum SaveType )type) {
case SAVE_KEEP:
case SAVE_S:
break;
case SAVE_RIGHT_RANGE:
- right_range_index = GET_STACK_INDEX(stk);
STACK_PUSH_SAVE_VAL(mem, SAVE_RIGHT_RANGE, right_range);
break;
}
STACK_GET_SAVE_VAL_TYPE_LAST_ID(SAVE_S, mem, right_range);
break;
case UPDATE_VAR_RIGHT_RANGE_FROM_STACK:
- {
- StackType* from;
- if (right_range_index != INVALID_STACK_INDEX &&
- right_range_index < GET_STACK_INDEX(stk))
- from = STACK_AT(right_range_index);
- else
- from = stk;
-
- STACK_GET_SAVE_VAL_TYPE_LAST_ID_FROM(SAVE_RIGHT_RANGE, mem,
- right_range, from);
- //fprintf(stderr, "update right_range: %ld\n", (right_range - sstart));
- }
+ STACK_GET_SAVE_VAL_TYPE_LAST_ID(SAVE_RIGHT_RANGE, mem, right_range);
break;
case UPDATE_VAR_RIGHT_RANGE_SPREV:
right_range = sprev;