From 52c636cb7309660115f4024821588a173a7ff69a Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Wed, 9 Jul 2014 09:55:23 +0200 Subject: [PATCH] avltree: Lock the tree during insertion. --- src/utils/avltree.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/utils/avltree.c b/src/utils/avltree.c index ce87c52..8c13233 100644 --- a/src/utils/avltree.c +++ b/src/utils/avltree.c @@ -302,9 +302,12 @@ sdb_avltree_insert(sdb_avltree_t *tree, sdb_object_t *obj) if (! n) return -1; + pthread_rwlock_wrlock(&tree->lock); + if (! tree->root) { tree->root = n; tree->size = 1; + pthread_rwlock_unlock(&tree->lock); return 0; } @@ -315,6 +318,7 @@ sdb_avltree_insert(sdb_avltree_t *tree, sdb_object_t *obj) diff = tree->cmp(obj, parent->obj); if (! diff) { node_destroy(n); + pthread_rwlock_unlock(&tree->lock); return -1; } @@ -338,6 +342,7 @@ sdb_avltree_insert(sdb_avltree_t *tree, sdb_object_t *obj) ++tree->size; rebalance(tree, parent); + pthread_rwlock_unlock(&tree->lock); return 0; } /* sdb_avltree_insert */ -- 2.30.2