Mercurial > hg > nginx
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 } |