From: Jason Ekstrand Date: Thu, 19 Sep 2019 20:17:24 +0000 (-0500) Subject: util/rb_tree: Reverse the order of comparison functions X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=commitdiff_plain;h=dae33052dbfec843d5e997dbd93049d702977fa6 util/rb_tree: Reverse the order of comparison functions The new order matches that of the comparison functions accepted by the C standard library qsort() functions. Being consistent with qsort will hopefully help avoid developer confusion. The only current user of the red-black tree is aub_mem.c which is pretty easy to fix up. Reviewed-by: Lionel Landwerlin --- diff --git a/src/intel/tools/aub_mem.c b/src/intel/tools/aub_mem.c index f436627d19d..2f70afc8b76 100644 --- a/src/intel/tools/aub_mem.c +++ b/src/intel/tools/aub_mem.c @@ -87,9 +87,9 @@ static inline int cmp_uint64(uint64_t a, uint64_t b) { if (a < b) - return -1; - if (a > b) return 1; + if (a > b) + return -1; return 0; } diff --git a/src/util/rb_tree.h b/src/util/rb_tree.h index 1e8aeb4a7b2..efdfb0411f1 100644 --- a/src/util/rb_tree.h +++ b/src/util/rb_tree.h @@ -127,7 +127,7 @@ rb_tree_insert(struct rb_tree *T, struct rb_node *node, bool left = false; while (x != NULL) { y = x; - left = cmp(node, x) < 0; + left = cmp(x, node) < 0; if (left) x = x->left; else @@ -167,9 +167,9 @@ rb_tree_search(struct rb_tree *T, const void *key, while (x != NULL) { int c = cmp(x, key); if (c < 0) - x = x->right; - else if (c > 0) x = x->left; + else if (c > 0) + x = x->right; else return x; } @@ -205,9 +205,9 @@ rb_tree_search_sloppy(struct rb_tree *T, const void *key, y = x; int c = cmp(x, key); if (c < 0) - x = x->right; - else if (c > 0) x = x->left; + else if (c > 0) + x = x->right; else return x; } diff --git a/src/util/rb_tree_test.c b/src/util/rb_tree_test.c index c56a90e83c5..a5952b3b52d 100644 --- a/src/util/rb_tree_test.c +++ b/src/util/rb_tree_test.c @@ -56,7 +56,7 @@ static int rb_test_node_cmp_void(const struct rb_node *n, const void *v) { struct rb_test_node *tn = rb_node_data(struct rb_test_node, n, node); - return tn->key - *(int *)v; + return *(int *)v - tn->key; } static int @@ -65,7 +65,7 @@ rb_test_node_cmp(const struct rb_node *a, const struct rb_node *b) struct rb_test_node *ta = rb_node_data(struct rb_test_node, a, node); struct rb_test_node *tb = rb_node_data(struct rb_test_node, b, node); - return ta->key - tb->key; + return tb->key - ta->key; } static void