From: Kenneth Graunke Date: Sun, 6 Jul 2014 05:04:45 +0000 (-0700) Subject: glsl: Fix the foreach_in_list_reverse macro. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e13a6406c3d55162d6f4641f3ccca7635b9a5212;p=mesa.git 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 --- 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) /**