X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=common%2Ftrie.c;h=2569dff2cc2c87d8018f09b0414693fc29427356;hb=dd53acce112e59a9ba35e3389c9bad4ea81480ca;hp=9ffa9b54eb1e4c01d16927360a37a9afdf898087;hpb=d66ec885e2c3680b1b42e5cf99b18865c6c1736c;p=apps%2Fpfixtools.git diff --git a/common/trie.c b/common/trie.c index 9ffa9b5..2569dff 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" @@ -52,10 +50,10 @@ struct trie_entry_t { ARRAY(trie_entry_t) struct trie_t { - trie_entry_t_array_t entries; - char_array_t c; - char_array_t keys; - int_array_t keys_offset; + A(trie_entry_t) entries; + A(char) c; + A(char) keys; + A(int) keys_offset; bool locked; }; @@ -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->entries); trie->locked = false; }