comparison src/core/ngx_rbtree.h @ 559:c1f965ef9718 release-0.3.1

nginx-0.3.1-RELEASE import *) 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.
author Igor Sysoev <igor@sysoev.ru>
date Mon, 10 Oct 2005 12:59:41 +0000
parents ecd9c160f25b
children 4e296b7d25bf
comparison
equal deleted inserted replaced
558:96a964d17328 559:c1f965ef9718
14 14
15 typedef ngx_uint_t ngx_rbtree_key_t; 15 typedef ngx_uint_t ngx_rbtree_key_t;
16 typedef ngx_int_t ngx_rbtree_key_int_t; 16 typedef ngx_int_t ngx_rbtree_key_int_t;
17 17
18 18
19 typedef struct ngx_rbtree_s ngx_rbtree_t; 19 typedef struct ngx_rbtree_node_s ngx_rbtree_node_t;
20 20
21 struct ngx_rbtree_s { 21 struct ngx_rbtree_node_s {
22 ngx_rbtree_key_t key; 22 ngx_rbtree_key_t key;
23 ngx_rbtree_t *left; 23 ngx_rbtree_node_t *left;
24 ngx_rbtree_t *right; 24 ngx_rbtree_node_t *right;
25 ngx_rbtree_t *parent; 25 ngx_rbtree_node_t *parent;
26 char color; 26 char color;
27 }; 27 };
28 28
29 29
30 void ngx_rbtree_insert(ngx_rbtree_t **root, ngx_rbtree_t *sentinel, 30 typedef struct ngx_rbtree_s ngx_rbtree_t;
31 ngx_rbtree_t *node); 31
32 void ngx_rbtree_delete(ngx_rbtree_t **root, ngx_rbtree_t *sentinel, 32 typedef ngx_rbtree_t *(*ngx_rbtree_insert_pt) (ngx_rbtree_node_t *root,
33 ngx_rbtree_t *node); 33 ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);
34
35 struct ngx_rbtree_s {
36 ngx_rbtree_node_t *root;
37 ngx_rbtree_node_t *sentinel;
38 /* ngx_rbtree_insert_pt insert; */
39 };
34 40
35 41
36 static ngx_inline ngx_rbtree_t * 42 void ngx_rbtree_insert(ngx_thread_volatile ngx_rbtree_t *tree,
37 ngx_rbtree_min(ngx_rbtree_t *node, ngx_rbtree_t *sentinel) 43 ngx_rbtree_node_t *node);
44 void ngx_rbtree_delete(ngx_thread_volatile ngx_rbtree_t *tree,
45 ngx_rbtree_node_t *node);
46
47
48 static ngx_inline ngx_rbtree_node_t *
49 ngx_rbtree_min(ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel)
38 { 50 {
39 while (node->left != sentinel) { 51 while (node->left != sentinel) {
40 node = node->left; 52 node = node->left;
41 } 53 }
42 54