Mercurial > hg > Applications > Grep
comparison regexParser/threadedSearch.cc @ 275:8879eb8c64a8
remove segmentation fault
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 30 Jan 2016 19:06:41 +0900 |
parents | 5aa9d01926f1 |
children | 7b4bcc7b5ae6 |
comparison
equal
deleted
inserted
replaced
273:bc704a31e842 | 275:8879eb8c64a8 |
---|---|
37 while (hasNext(ccw)) { | 37 while (hasNext(ccw)) { |
38 getNext(ccw); | 38 getNext(ccw); |
39 ccvSize++; | 39 ccvSize++; |
40 } | 40 } |
41 tState->ccvSize = ccvSize; | 41 tState->ccvSize = ccvSize; |
42 if (state->accept) { | |
43 tState->stateSkip = tg->stateMatch; | |
44 tState->stateContinue = tg->stateNothing; | |
45 } else { | |
46 tState->stateSkip = tg->stateSkip; | |
47 tState->stateContinue = tg->stateNothing; | |
48 } | |
42 if (ccvSize == 0) return tState; | 49 if (ccvSize == 0) return tState; |
43 else tState->ccv = (ccv*)malloc(sizeof(ccv)*ccvSize); | 50 else tState->ccv = (ccv*)malloc(sizeof(ccv)*ccvSize); |
44 ccw = createCharClassWalker(state->cc); | 51 ccw = createCharClassWalker(state->cc); |
45 int i = 0; | 52 int i = 0; |
46 while (hasNext(ccw)) { | 53 while (hasNext(ccw)) { |
53 ccv->tState = NULL; | 60 ccv->tState = NULL; |
54 ccv->state = cc->nextState; | 61 ccv->state = cc->nextState; |
55 ccv->w = cc->cond.w; | 62 ccv->w = cc->cond.w; |
56 } | 63 } |
57 free(ccw); | 64 free(ccw); |
58 if (state->accept) { | |
59 tState->stateSkip = tg->stateMatch; | |
60 tState->stateContinue = tg->stateNothing; | |
61 } else { | |
62 tState->stateSkip = tg->stateSkip; | |
63 tState->stateContinue = tg->stateNothing; | |
64 } | |
65 return tState; | 65 return tState; |
66 } | 66 } |
67 | 67 |
68 void tSearch(TSValue tsv) { | 68 void tSearch(TSValue tsv) { |
69 next: while (tsv.buff.buffptr < tsv.buff.buffend) { | 69 next: while (tsv.buff.buffptr < tsv.buff.buffend) { |