nginx-0.0.1-2003-12-05-10:11:46 import
diff --git a/src/core/ngx_rbtree.c b/src/core/ngx_rbtree.c
index 2bc4650..ea78e22 100644
--- a/src/core/ngx_rbtree.c
+++ b/src/core/ngx_rbtree.c
@@ -8,12 +8,11 @@
  * to Algorithms" by Cormen, Leiserson and Rivest.
  */
 
-#define ngx_rbt_red(node)           ((uintptr_t) (node)->data |= 1)
-#define ngx_rbt_black(node)         ((uintptr_t) (node)->data &= ~1)
-#define ngx_rbt_is_red(node)        ((uintptr_t) (node)->data & 1)
+#define ngx_rbt_red(node)           ((node)->color = 1)
+#define ngx_rbt_black(node)         ((node)->color = 0)
+#define ngx_rbt_is_red(node)        ((node)->color)
 #define ngx_rbt_is_black(node)      (!ngx_rbt_is_red(node))
-#define ngx_rbt_copy_color(n1, n2)                                            \
-                         ((uintptr_t) (n1)->data |= (uintptr_t) (n2)->data & 1)
+#define ngx_rbt_copy_color(n1, n2)  (n1->color = n2->color)
 
 
 ngx_inline void ngx_rbtree_left_rotate(ngx_rbtree_t **root, ngx_rbtree_t *node);
@@ -166,7 +165,7 @@
 
     if (subst != node) {
         node->key = subst->key;
-        node->data = subst->data;
+        node->color = subst->color;
     }
 
     if (ngx_rbt_is_red(subst)) {
diff --git a/src/core/ngx_rbtree.h b/src/core/ngx_rbtree.h
index de6fef9..af0f2ec 100644
--- a/src/core/ngx_rbtree.h
+++ b/src/core/ngx_rbtree.h
@@ -13,7 +13,7 @@
    ngx_rbtree_t   *left;
    ngx_rbtree_t   *right;
    ngx_rbtree_t   *parent;
-   void           *data;
+   char            color;
 };
 
 extern ngx_rbtree_t  sentinel;