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 <kenn...@whitecape.org> --- 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 922bd68..a4444bd 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.0.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev