[Mesa-dev] [PATCH] glsl/list: make nodes safe for double removal, etc.

Rob Clark robdclark at gmail.com
Sat Apr 2 21:09:27 UTC 2016


From: Rob Clark <robclark at freedesktop.org>

It's no extra overhead to do a _self_link() and it eliminates a class of
potential problems.

Signed-off-by: Rob Clark <robclark at freedesktop.org>
Dared-by: Jason Ekstrand <jason at jlekstrand.net>
---
 src/compiler/glsl/list.h | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/src/compiler/glsl/list.h b/src/compiler/glsl/list.h
index a1c4d82..77e1f67 100644
--- a/src/compiler/glsl/list.h
+++ b/src/compiler/glsl/list.h
@@ -165,19 +165,18 @@ exec_node_get_prev(struct exec_node *n)
 }
 
 static inline void
-exec_node_remove(struct exec_node *n)
+exec_node_self_link(struct exec_node *n)
 {
-   n->next->prev = n->prev;
-   n->prev->next = n->next;
-   n->next = NULL;
-   n->prev = NULL;
+   n->next = n;
+   n->prev = n;
 }
 
 static inline void
-exec_node_self_link(struct exec_node *n)
+exec_node_remove(struct exec_node *n)
 {
-   n->next = n;
-   n->prev = n;
+   n->next->prev = n->prev;
+   n->prev->next = n->next;
+   exec_node_self_link(n);
 }
 
 static inline void
-- 
2.5.5



More information about the mesa-dev mailing list