# HG changeset patch # User Masataka Kohagura # Date 1453525828 -32400 # Node ID e22e3475f664a1b9c8f4b8379718992840b7d951 # Parent e60dd2fa34099ea820dfe7e785fb67ac4151a8cd fix diff -r e60dd2fa3409 -r e22e3475f664 regexParser/regexParser.h --- a/regexParser/regexParser.h Sat Jan 23 13:51:33 2016 +0900 +++ b/regexParser/regexParser.h Sat Jan 23 14:10:28 2016 +0900 @@ -62,7 +62,7 @@ State *state; void stateSkip(tsValue); int ccvSize; - CCV ccv; + CCVPtr ccv; } TState, *TStatePtr; typedef struct result { diff -r e60dd2fa3409 -r e22e3475f664 regexParser/threadedSearch.cc --- a/regexParser/threadedSearch.cc Sat Jan 23 13:51:33 2016 +0900 +++ b/regexParser/threadedSearch.cc Sat Jan 23 14:10:28 2016 +0900 @@ -9,17 +9,17 @@ tsv.current->stateSkip(tsv); } -TStatePtr generateTState(State state) { +TStatePtr generateTState(StatePtr state) { TStatePtr tState = NEW(TState); int ccvSize = 0; - CharClassWalkerPtr ccw = createCharClassWalker(state.cc); + CharClassWalkerPtr ccw = createCharClassWalker(state->cc); while (hasNext(ccw)) { CharClassPtr cc = getNext(ccw); ccvSize++; } if (ccvSize == 0) return tState; else tState->ccv = (ccv*)malloc(sizeof(ccv)*ccvSize); - ccw = createCharClassWalker(state.cc); + ccw = createCharClassWalker(state->cc); int i = 0; while (hasNext(ccw)) { CharClassPtr cc = getNext(ccw); @@ -44,18 +44,18 @@ if (cbegin) tsv.current->stateSkip(tsv); else if (c<=ccv->end) { // range matched. - if (ccv->w) { + if (ccv->w.word) { // match the word. // if (not match) continue; } TStatePtr current = ccv->tState; if (current == NULL) { // create tSearch in next state. - StatePtr state = tsv.stateArray[ccv->state.bitContainer]; + StatePtr state = tsv.tg->stateArray[ccv->state.bitContainer]; if (state == NULL) { // on the fly subset construction. - state = createState(tg,bi); - tg->stateArray[bi.bitContainer] = state; + state = createState(tsv.tg,bi); + tsv.tg->stateArray[bi.bitContainer] = state; determinize(state,tsv.tg); } if (state->tState == NULL) {