From 68afbe89c72d085dcbbf2b264f0201ab73fe339e Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Thu, 23 Sep 2010 20:39:27 +0200 Subject: util: make calling remove_from_list multiple times in a row safe This commit fixes an infinite loop in foreach_s if remove_from_list is used more than once on the same item with other list operations in between. NOTE: This is a candidate for the 7.9 branch because the commit "r300g: fixup long-lived BO maps being incorrectly unmapped when flushing" depends on it. --- src/gallium/auxiliary/util/u_simple_list.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/gallium/auxiliary/util') diff --git a/src/gallium/auxiliary/util/u_simple_list.h b/src/gallium/auxiliary/util/u_simple_list.h index f5f43b0faa2..fe59771371b 100644 --- a/src/gallium/auxiliary/util/u_simple_list.h +++ b/src/gallium/auxiliary/util/u_simple_list.h @@ -46,6 +46,8 @@ do { \ (elem)->next->prev = (elem)->prev; \ (elem)->prev->next = (elem)->next; \ + (elem)->next = elem; \ + (elem)->prev = elem; \ } while (0) /** -- cgit v1.2.3