X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Futils%2Favltree.c;h=7c810599135cf94658791fd1acb5c0a41f759852;hp=95c004d32ffbe10ae39a31b9a146a80adccd2b41;hb=d735d37ba7cb09d1ee269fa7d8962f5a89fcd4f8;hpb=863ebc4bdd91758a2f7d20e846f10f61df2ad409 diff --git a/src/utils/avltree.c b/src/utils/avltree.c index 95c004d..7c81059 100644 --- a/src/utils/avltree.c +++ b/src/utils/avltree.c @@ -31,8 +31,9 @@ #include "utils/avltree.h" -#include +#include +#include #include /* @@ -202,8 +203,16 @@ sdb_avltree_insert(sdb_avltree_t *tree, sdb_object_t *obj) if (! n) return -1; + if (! tree->root) { + tree->root = n; + tree->size = 1; + return 0; + } + parent = tree->root; - while (parent) { + while (42) { + assert(parent); + diff = tree->cmp(obj, parent->obj); if (! diff) { node_destroy(n); @@ -226,15 +235,6 @@ sdb_avltree_insert(sdb_avltree_t *tree, sdb_object_t *obj) } } - if (! parent) { - /* new root */ - if (diff < 0) - n->right = tree->root; - else - n->left = tree->root; - tree->root = n; - } - n->parent = parent; ++tree->size;