aboutsummaryrefslogtreecommitdiff
path: root/src/core/ngx_rbtree.h
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2005-10-10 12:59:41 +0000
committerIgor Sysoev <igor@sysoev.ru>2005-10-10 12:59:41 +0000
commit1bfa7bc78a23c0150e0bbf854e778dba4df30031 (patch)
tree25779bc18366a22cabccd56a89e0af11025d7c8a /src/core/ngx_rbtree.h
parentb29779caaf628afc28baffb71763f0725da2e0e4 (diff)
downloadnginx-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.h34
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;