comparison src/core/ngx_rbtree.c @ 6928:e0cc454aafe4

Core: introduced ngx_rbtree_next().
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 07 Mar 2017 18:51:13 +0300
parents b3c5b4312667
children 7fdcf308e0f0
comparison
equal deleted inserted replaced
6927:c36d160cd4e0 6928:e0cc454aafe4
376 } 376 }
377 377
378 temp->right = node; 378 temp->right = node;
379 node->parent = temp; 379 node->parent = temp;
380 } 380 }
381
382
383 ngx_rbtree_node_t *
384 ngx_rbtree_next(ngx_rbtree_t *tree, ngx_rbtree_node_t *node)
385 {
386 ngx_rbtree_node_t *root, *sentinel, *parent;
387
388 sentinel = tree->sentinel;
389
390 if (node->right != sentinel) {
391 return ngx_rbtree_min(node->right, sentinel);
392 }
393
394 root = tree->root;
395
396 for ( ;; ) {
397 parent = node->parent;
398
399 if (node == root) {
400 return NULL;
401 }
402
403 if (node == parent->left) {
404 return parent;
405 }
406
407 node = parent;
408 }
409 }