diff --git a/Automaton.c b/Automaton.c index 0ef0f9c..2446590 100644 --- a/Automaton.c +++ b/Automaton.c @@ -336,7 +336,7 @@ clear_aux(TrieNode* node, KeysStore store) { clear_aux(child, store); } - memfree(node); + memory_free(node); } #undef automaton } @@ -562,7 +562,7 @@ automaton_make_automaton(PyObject* self, PyObject* args) { break; else { node = item->node; - memfree(item); + memory_free(item); } for (i=0; i < node->n; i++) { diff --git a/AutomatonItemsIter.c b/AutomatonItemsIter.c index e836ef0..91184ca 100644 --- a/AutomatonItemsIter.c +++ b/AutomatonItemsIter.c @@ -52,20 +52,20 @@ automaton_items_iter_new( iter->matchtype = matchtype; list_init(&iter->stack); - iter->buffer = memalloc((automaton->longest_word + 1) * TRIE_LETTER_SIZE); + iter->buffer = memory_alloc((automaton->longest_word + 1) * TRIE_LETTER_SIZE); if (iter->buffer == NULL) { goto no_memory; } #ifndef AHOCORASICK_UNICODE - iter->char_buffer = memalloc(automaton->longest_word + 1); + iter->char_buffer = memory_alloc(automaton->longest_word + 1); if (iter->char_buffer == NULL) { goto no_memory; } #endif if (word) { - iter->pattern = (TRIE_LETTER_TYPE*)memalloc(wordlen * TRIE_LETTER_SIZE); + iter->pattern = (TRIE_LETTER_TYPE*)memory_alloc(wordlen * TRIE_LETTER_SIZE); if (UNLIKELY(iter->pattern == NULL)) { goto no_memory; } @@ -105,11 +105,8 @@ automaton_items_iter_new( static void automaton_items_iter_del(PyObject* self) { - if (iter->buffer) - memfree(iter->buffer); - - if (iter->pattern) - memfree(iter->pattern); + xfree(iter->buffer); + xfree(iter->pattern); list_delete(&iter->stack); Py_DECREF(iter->automaton); diff --git a/Automaton_pickle.c b/Automaton_pickle.c index f85b195..9b25678 100644 --- a/Automaton_pickle.c +++ b/Automaton_pickle.c @@ -52,7 +52,7 @@ pickle_dump_replace_fail_with_id(TrieNode* node, const int depth, void* extra) { ASSERT(sizeof(NodeID*) <= sizeof(TrieNode*)); #define state ((DumpState*)extra) - repl = (NodeID*)memalloc(sizeof(NodeID)); + repl = (NodeID*)memory_alloc(sizeof(NodeID)); if (LIKELY(repl != NULL)) { state->id += 1; state->total_size += trienode_get_size(node)/* - sizeof(TrieNode*)*/; @@ -79,7 +79,7 @@ pickle_dump_revert_replace(TrieNode* node, const int depth, void* extra) { if (state->failed_on != node) { NodeID* repl = (NodeID*)(node->fail); node->fail = repl->fail; - memfree(repl); + memory_free(repl); return 1; } @@ -95,7 +95,7 @@ pickle_dump_undo_replace(TrieNode* node, const int depth, void* extra) { #define state ((DumpState*)extra) NodeID* repl = (NodeID*)(node->fail); node->fail = repl->fail; - memfree(repl); + memory_free(repl); return 1; #undef state @@ -202,7 +202,7 @@ automaton___reduce__(PyObject* self, PyObject* args) { data.error = false; data.size = state.total_size; data.top = 0; - data.data = memalloc(data.size); + data.data = memory_alloc(data.size); data.values = NULL; if (data.data == NULL) { @@ -261,8 +261,7 @@ automaton___reduce__(PyObject* self, PyObject* args) { trie_traverse(automaton->root, pickle_dump_undo_replace, NULL); // and free memory - if (data.data) - memfree(data.data); + xfree(data.data); Py_XDECREF(data.values); @@ -276,8 +275,7 @@ automaton___reduce__(PyObject* self, PyObject* args) { trie_traverse(automaton->root, pickle_dump_undo_replace, NULL); // and free memory - if (data.data) - memfree(data.data); + xfree(data.data); Py_XDECREF(data.values); return NULL; @@ -309,7 +307,7 @@ automaton_unpickle( return false; } - id2node = (TrieNode**)memalloc((count+1) * sizeof(TrieNode)); + id2node = (TrieNode**)memory_alloc((count+1) * sizeof(TrieNode)); if (id2node == NULL) { goto no_mem; } @@ -319,7 +317,7 @@ automaton_unpickle( ptr = data; for (i=0; i < count; i++) { dump = (TrieNode*)(ptr); - node = (TrieNode*)memalloc(sizeof(TrieNode)); + node = (TrieNode*)memory_alloc(sizeof(TrieNode)); if (LIKELY(node != NULL)) { node->output = dump->output; node->fail = dump->fail; @@ -332,7 +330,7 @@ automaton_unpickle( goto no_mem; if (node->n > 0) { - node->next = (TrieNode**)memalloc(node->n * sizeof(TrieNode*)); + node->next = (TrieNode**)memory_alloc(node->n * sizeof(TrieNode*)); if (LIKELY(node->next != NULL)) { if (UNLIKELY(ptr + sizeof(TrieNode) - sizeof(TrieNode*) > data + size)) { PyErr_SetString(PyExc_ValueError, "binary data truncated (2)"); @@ -344,7 +342,7 @@ automaton_unpickle( node->next[j] = next[j]; } else { - memfree(node); + memory_free(node); goto no_mem; } } @@ -385,7 +383,7 @@ automaton_unpickle( automaton->root = id2node[1]; - memfree(id2node); + memory_free(id2node); return 1; no_mem: @@ -395,12 +393,12 @@ automaton_unpickle( for (i=1; i < id; i++) { TrieNode* tmp = id2node[i]; if (tmp->n > 0) - memfree(tmp->next); + memory_free(tmp->next); - memfree(tmp); + memory_free(tmp); } - memfree(id2node); + memory_free(id2node); }; return 0; diff --git a/setup.py b/setup.py index 2db1a30..8bdccb4 100644 --- a/setup.py +++ b/setup.py @@ -43,6 +43,9 @@ def get_long_description(): sources=[ 'pyahocorasick.c' ], + libraries=[ + "efence" + ], define_macros=macros, depends=[ 'common.h', diff --git a/slist.c b/slist.c index 1c54b22..6f88ab1 100644 --- a/slist.c +++ b/slist.c @@ -17,15 +17,18 @@ ListItem* list_item_new(const size_t size) { - ListItem* item = (ListItem*)memalloc(size); - item->__next = 0; + ListItem* item = (ListItem*)memory_alloc(size); + if (item) { + item->__next = 0; + } + return item; } void list_item_delete(ListItem* item) { - memfree(item); + memory_free(item); } @@ -50,7 +53,7 @@ list_delete(List* list) { while (item) { tmp = item; item = item->__next; - memfree(tmp); + memory_free(tmp); } list->head = list->last = NULL; diff --git a/trienode.c b/trienode.c index 34848bb..21fcda5 100644 --- a/trienode.c +++ b/trienode.c @@ -12,7 +12,7 @@ static TrieNode* trienode_new(const TRIE_LETTER_TYPE letter, const char eow) { - TrieNode* node = (TrieNode*)memalloc(sizeof(TrieNode)); + TrieNode* node = (TrieNode*)memory_alloc(sizeof(TrieNode)); if (node) { node->output.integer = 0; node->output.object = NULL; diff --git a/utils.c b/utils.c index f7f5856..67576cf 100644 --- a/utils.c +++ b/utils.c @@ -13,12 +13,12 @@ void* memory_alloc(ssize_t size) { void* res = malloc(size); - //printf("allocated %p (size=%d)\n", res, size); + printf("allocated %p (size=%d)\n", res, size); return res; } void memory_free(void* ptr) { - //printf("freeing %p\n", ptr); + printf("freeing %p\n", ptr); free(ptr); }