From e13a6406c3d55162d6f4641f3ccca7635b9a5212 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Sat, 5 Jul 2014 22:04:45 -0700 Subject: [PATCH] glsl: Fix the foreach_in_list_reverse macro. We clearly don't want to start at the head and walk backwards; we want to start at the last real element before the tail sentinel. If the list is empty, tail_pred will be the head sentinel, and we'll stop. Nothing uses this function, so I guess nobody noticed it was broken. Signed-off-by: Kenneth Graunke Reviewed-by: Matt Turner --- src/glsl/list.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/glsl/list.h b/src/glsl/list.h index 922bd68ab5e..a4444bda9e6 100644 --- a/src/glsl/list.h +++ b/src/glsl/list.h @@ -565,9 +565,9 @@ inline void exec_node::insert_before(exec_list *before) !(__inst)->is_tail_sentinel(); \ (__inst) = (__type *)(__inst)->next) -#define foreach_in_list_reverse(__type, __inst, __list) \ - for (__type *(__inst) = (__type *)(__list)->head; \ - !(__inst)->is_head_sentinel(); \ +#define foreach_in_list_reverse(__type, __inst, __list) \ + for (__type *(__inst) = (__type *)(__list)->tail_pred; \ + !(__inst)->is_head_sentinel(); \ (__inst) = (__type *)(__inst)->prev) /** -- 2.30.2