ucx/avl.c

changeset 197
a82f3456b76d
parent 196
1b4cdafef2eb
child 199
e25dc68336ec
equal deleted inserted replaced
196:1b4cdafef2eb 197:a82f3456b76d
144 144
145 void* ucx_avl_put(UcxAVLTree *tree, intptr_t key, void *value) { 145 void* ucx_avl_put(UcxAVLTree *tree, intptr_t key, void *value) {
146 if (tree->root) { 146 if (tree->root) {
147 UcxAVLNode *n = tree->root; 147 UcxAVLNode *n = tree->root;
148 int cmpresult; 148 int cmpresult;
149 while (cmpresult = tree->cmpfunc( 149 while ((cmpresult = tree->cmpfunc(
150 ptrcast(key), ptrcast(n->key), tree->userdata)) { 150 ptrcast(key), ptrcast(n->key), tree->userdata))) {
151 UcxAVLNode *m = cmpresult > 0 ? n->right : n->left; 151 UcxAVLNode *m = cmpresult > 0 ? n->right : n->left;
152 if (m) { 152 if (m) {
153 n = m; 153 n = m;
154 } else { 154 } else {
155 break; 155 break;

mercurial