*** _sre.c Sat Sep 23 02:37:24 2000 --- new_sre.c Sat Sep 23 02:51:36 2000 *************** *** 577,582 **** --- 577,583 ---- SRE_REPEAT* rp; int lastmark; SRE_CODE chr; + int maxRepeatFlag; SRE_REPEAT rep; /* FIXME: allocate in STATE instead */ *************** *** 1012,1018 **** /* see if the tail matches */ state->repeat = rp->prev; ! i = SRE_MATCH(state, pattern, level + 1); if (i) { /* free(rp); */ return i; --- 1013,1031 ---- /* see if the tail matches */ state->repeat = rp->prev; ! ! maxRepeatFlag = rp->pattern[2] == 0xffff; ! while (1) { ! i = SRE_MATCH(state, pattern, level + 1); ! if (i || ptr>= end || !maxRepeatFlag){ ! break; ! } ! if (!i) { ! ++ptr; ! ++(SRE_CHAR*) state->ptr; ! } ! } ! if (i) { /* free(rp); */ return i;

AltStyle によって変換されたページ (->オリジナル) /