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