[Mesa-dev] [PATCH 1/2] util: Fix foreach_list_typed_safe when exec_node is not at offset 0.
Kenneth Graunke
kenneth at whitecape.org
Mon Mar 9 18:36:30 PDT 2015
From: Jason Ekstrand <jason.ekstrand at intel.com>
__next and __prev are pointers to the structure containing the exec_node
link, not the embedded exec_node. NULL checks would fail unless the
embedded exec_node happened to be at offset 0 in the parent struct.
Signed-off-by: Jason Ekstrand <jason.ekstrand at intel.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
---
src/glsl/list.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/glsl/list.h b/src/glsl/list.h
index ddb98f7..680e963 100644
--- a/src/glsl/list.h
+++ b/src/glsl/list.h
@@ -684,7 +684,7 @@ inline void exec_node::insert_before(exec_list *before)
exec_node_data(__type, (__list)->head, __field), \
* __next = \
exec_node_data(__type, (__node)->__field.next, __field); \
- __next != NULL; \
+ &__next->__field != NULL; \
__node = __next, __next = \
exec_node_data(__type, (__next)->__field.next, __field))
@@ -693,7 +693,7 @@ inline void exec_node::insert_before(exec_list *before)
exec_node_data(__type, (__list)->tail_pred, __field), \
* __prev = \
exec_node_data(__type, (__node)->__field.prev, __field); \
- __prev != NULL; \
+ &__prev->__field != NULL; \
__node = __prev, __prev = \
exec_node_data(__type, (__prev)->__field.prev, __field))
--
2.2.2
More information about the mesa-dev
mailing list