X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=common%2Ftrie.c;h=59f1a9f5dcf557dbf760c81a4e0579c6348ca4d2;hb=c1d7275428570d953a7d138d364235242f1c0d34;hp=5bf18ecd848a82d313c19f15694b3e100b9cfdf5;hpb=00bae73b4873e9c1e8d5526feecdb275f7bb756f;p=apps%2Fpfixtools.git diff --git a/common/trie.c b/common/trie.c index 5bf18ec..59f1a9f 100644 --- a/common/trie.c +++ b/common/trie.c @@ -33,8 +33,6 @@ * Copyright © 2008 Florent Bruneau */ -#include - #include "array.h" #include "str.h" #include "trie.h" @@ -152,7 +150,7 @@ static inline int trie_entry_new(trie_t *trie) { const trie_entry_t e = TRIE_ENTRY_INIT; array_add(trie->entries, e); - return trie->entries.len; + return trie->entries.len - 1; } static inline int trie_add_leaf(trie_t *trie, const char *key) @@ -304,13 +302,13 @@ void trie_lock(trie_t *trie) if (trie->locked) { return; } - if (mlock(trie->entries.data, sizeof(trie_entry_t) * trie->entries.len) != 0) { + if (!array_lock(trie->entries)) { UNIXERR("mlock"); return; } - if (mlock(trie->c.data, trie->c.len) != 0) { + if (!array_lock(trie->c)) { UNIXERR("mlock"); - munlock(trie->entries.data, sizeof(trie_entry_t) * trie->entries.len); + array_unlock(trie->entries); return; } trie->locked = true; @@ -321,8 +319,8 @@ void trie_unlock(trie_t *trie) if (!trie->locked) { return; } - munlock(trie->entries.data, sizeof(trie_entry_t) * trie->entries.len); - munlock(trie->c.data, trie->c.len); + array_unlock(trie->entries); + array_unlock(trie->c); trie->locked = false; }