diff --git a/core/sm_trie.cpp b/core/sm_trie.cpp index a102b868..b0dbd8d5 100644 --- a/core/sm_trie.cpp +++ b/core/sm_trie.cpp @@ -263,7 +263,7 @@ void sm_trie_destroy(Trie *trie) { free(trie->base); free(trie->stringtab); - free(trie); + delete trie; } bool sm_trie_retrieve(Trie *trie, const char *key, void **value) @@ -424,9 +424,11 @@ bool sm_trie_insert(Trie *trie, const char *key, void *value) if (incoming_base + incoming_limit > trie->baseSize) { - incoming_limit = trie->baseSize - incoming_limit; + incoming_limit = trie->baseSize - incoming_base; } + assert(incoming_limit > 0 && incoming_limit <= 255); + for (unsigned int i=1; i<=255; i++,cur++) { if (cur->mode == Node_Arc || cur->mode == Node_Term) @@ -707,6 +709,8 @@ bool sm_trie_insert(Trie *trie, const char *key, void *value) /* Phew! */ return true; + } else { + assert(node->mode == Node_Arc); } } lastidx = curidx;