comparison src/core/ngx_rbtree.h @ 108:cf3d6edb3ad6 NGINX_0_3_1

nginx 0.3.1 *) Bugfix: the segmentation fault occurred when the signal queue overflowed if the "rtsig" method was used; bug appeared in 0.2.0. *) Change: correct handling of the "\\", "\"", "\'", and "\$" pairs in SSI.
author Igor Sysoev <http://sysoev.ru>
date Mon, 10 Oct 2005 00:00:00 +0400
parents 45f7329b4bd0
children 91372f004adf
comparison
equal deleted inserted replaced
107:495d867e35e8 108:cf3d6edb3ad6
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