Browse Source

attempt to fix failure in insert

wip/issue7_chasing
Brice Figureau 15 years ago
parent
commit
cd8edb6ef9
1 changed files with 34 additions and 16 deletions
  1. 34
    16
      ngx_http_uploadprogress_module.c

+ 34
- 16
ngx_http_uploadprogress_module.c View File

917
                                             ngx_rbtree_node_t * node,
917
                                             ngx_rbtree_node_t * node,
918
                                             ngx_rbtree_node_t * sentinel)
918
                                             ngx_rbtree_node_t * sentinel)
919
 {
919
 {
920
-    ngx_rbtree_node_t              **p;
921
-    ngx_http_uploadprogress_node_t  *upn, *upnt;
920
+     ngx_http_uploadprogress_node_t  *upn, *upnt;
922
 
921
 
923
-    for (;;) {
922
+     for (;;) {
923
+
924
+         if (node->key < temp->key) {
924
 
925
 
925
-        if (node->key < temp->key) {
926
+            if (temp->left == sentinel) {
927
+                temp->left = node;
928
+                break;
929
+            }
926
 
930
 
927
-            p = &temp->left;
931
+            temp = temp->left;
928
 
932
 
929
         } else if (node->key > temp->key) {
933
         } else if (node->key > temp->key) {
930
 
934
 
931
-            p = &temp->right;
935
+            if (temp->right == sentinel) {
936
+                temp->right = node;
937
+                break;
938
+            }
932
 
939
 
933
-        } else { /* node->key == temp->key */
940
+            temp = temp->right;
941
+
942
+        } else {                /* node->key == temp->key */
934
 
943
 
935
             upn = (ngx_http_uploadprogress_node_t *) node;
944
             upn = (ngx_http_uploadprogress_node_t *) node;
936
             upnt = (ngx_http_uploadprogress_node_t *) temp;
945
             upnt = (ngx_http_uploadprogress_node_t *) temp;
937
 
946
 
938
-            p = (ngx_memn2cmp(upn->data, upnt->data, upn->len, upnt->len) < 0)
939
-                ? &temp->left : &temp->right;
940
-        }
947
+            if (ngx_memn2cmp(upn->data, upnt->data, upn->len, upnt->len) < 0) {
941
 
948
 
942
-        if (*p == sentinel) {
943
-            break;
944
-        }
949
+                if (temp->left == sentinel) {
950
+                    temp->left = node;
951
+                    break;
952
+                }
945
 
953
 
946
-        temp = *p;
947
-    }
954
+                temp = temp->left;
955
+
956
+            } else {
957
+
958
+                if (temp->right == sentinel) {
959
+                    temp->right = node;
960
+                    break;
961
+                }
948
 
962
 
949
-    *p = node;
963
+                temp = temp->right;
964
+            }
965
+        }
966
+    }
967
+    
950
     node->parent = temp;
968
     node->parent = temp;
951
     node->left = sentinel;
969
     node->left = sentinel;
952
     node->right = sentinel;
970
     node->right = sentinel;

Loading…
Cancel
Save