diff options
author | Igor Sysoev <igor@sysoev.ru> | 2005-10-10 12:59:41 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2005-10-10 12:59:41 +0000 |
commit | 1bfa7bc78a23c0150e0bbf854e778dba4df30031 (patch) | |
tree | 25779bc18366a22cabccd56a89e0af11025d7c8a /src/core/ngx_rbtree.h | |
parent | b29779caaf628afc28baffb71763f0725da2e0e4 (diff) | |
download | nginx-1bfa7bc78a23c0150e0bbf854e778dba4df30031.tar.gz nginx-1bfa7bc78a23c0150e0bbf854e778dba4df30031.zip |
nginx-0.3.1-RELEASE importrelease-0.3.1
*) Bugfix: the segmentation fault occurred when the signal queue
overflowed if the "rtsig" method was used; the bug had appeared in
0.2.0.
*) Change: correct handling of the "\\", "\"", "\'", and "\$" pairs in
SSI.
Diffstat (limited to 'src/core/ngx_rbtree.h')
-rw-r--r-- | src/core/ngx_rbtree.h | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/src/core/ngx_rbtree.h b/src/core/ngx_rbtree.h index d6803f912..1b1322d3c 100644 --- a/src/core/ngx_rbtree.h +++ b/src/core/ngx_rbtree.h @@ -16,25 +16,37 @@ typedef ngx_uint_t ngx_rbtree_key_t; typedef ngx_int_t ngx_rbtree_key_int_t; +typedef struct ngx_rbtree_node_s ngx_rbtree_node_t; + +struct ngx_rbtree_node_s { + ngx_rbtree_key_t key; + ngx_rbtree_node_t *left; + ngx_rbtree_node_t *right; + ngx_rbtree_node_t *parent; + char color; +}; + + typedef struct ngx_rbtree_s ngx_rbtree_t; +typedef ngx_rbtree_t *(*ngx_rbtree_insert_pt) (ngx_rbtree_node_t *root, + ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel); + struct ngx_rbtree_s { - ngx_rbtree_key_t key; - ngx_rbtree_t *left; - ngx_rbtree_t *right; - ngx_rbtree_t *parent; - char color; + ngx_rbtree_node_t *root; + ngx_rbtree_node_t *sentinel; + /* ngx_rbtree_insert_pt insert; */ }; -void ngx_rbtree_insert(ngx_rbtree_t **root, ngx_rbtree_t *sentinel, - ngx_rbtree_t *node); -void ngx_rbtree_delete(ngx_rbtree_t **root, ngx_rbtree_t *sentinel, - ngx_rbtree_t *node); +void ngx_rbtree_insert(ngx_thread_volatile ngx_rbtree_t *tree, + ngx_rbtree_node_t *node); +void ngx_rbtree_delete(ngx_thread_volatile ngx_rbtree_t *tree, + ngx_rbtree_node_t *node); -static ngx_inline ngx_rbtree_t * -ngx_rbtree_min(ngx_rbtree_t *node, ngx_rbtree_t *sentinel) +static ngx_inline ngx_rbtree_node_t * +ngx_rbtree_min(ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel) { while (node->left != sentinel) { node = node->left; |