提交 16f089c3 编写于 作者: dengyihao's avatar dengyihao

update fst core struct

上级 c0ca718e
...@@ -146,24 +146,27 @@ uint64_t fstUnFinishedNodesFindCommPrefixAndSetOutput(FstUnFinishedNodes *node, ...@@ -146,24 +146,27 @@ uint64_t fstUnFinishedNodesFindCommPrefixAndSetOutput(FstUnFinishedNodes *node,
size_t lsz = (size_t)(s->end - s->start + 1); // data len size_t lsz = (size_t)(s->end - s->start + 1); // data len
size_t ssz = taosArrayGetSize(node->stack); // stack size size_t ssz = taosArrayGetSize(node->stack); // stack size
uint64_t res = 0; uint64_t i = 0;
for (size_t i = 0; i < lsz && i < ssz; i++) { for (i = 0; i < lsz && i < ssz; i++) {
FstBuilderNodeUnfinished *un = taosArrayGet(node->stack, i); FstBuilderNodeUnfinished *un = taosArrayGet(node->stack, i);
FstLastTransition *last = un->last; FstLastTransition *t = un->last;
if (last->inp == s->data[s->start + i]) { uint64_t addPrefix = 0;
uint64_t commPrefix = last->out; if (t && t->inp == s->data[s->start + i]) {
uint64_t addPrefix = last->out - commPrefix; uint64_t commPrefix = MIN(t->out, *out);
out = out - commPrefix; uint64_t tAddPrefix = t->out - commPrefix;
last->out = commPrefix; (*out) = (*out) - commPrefix;
if (addPrefix != 0) { t->out = commPrefix;
fstBuilderNodeUnfinishedAddOutputPrefix(un, addPrefix); addPrefix = tAddPrefix;
}
} else { } else {
break; break;
}
if (addPrefix != 0) {
fstBuilderNodeUnfinishedAddOutputPrefix(un, addPrefix);
} }
} }
return res; return i;
} }
...@@ -780,7 +783,7 @@ void fstBuilderInsertOutput(FstBuilder *b, FstSlice bs, Output in) { ...@@ -780,7 +783,7 @@ void fstBuilderInsertOutput(FstBuilder *b, FstSlice bs, Output in) {
} }
if (prefixLen == FST_SLICE_LEN(s)) { if (prefixLen == FST_SLICE_LEN(s)) {
assert(out != 0); assert(out == 0);
return; return;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册