summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2010-09-23 20:39:27 +0200
committerMarek Olšák <[email protected]>2010-09-24 02:29:04 +0200
commit68afbe89c72d085dcbbf2b264f0201ab73fe339e (patch)
treefdae0d53a496ad326cc2e3f3abaac11597931e0f
parentf46523e0bcdfe447b4a9a35fe1561490fa32c3f0 (diff)
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.
-rw-r--r--src/gallium/auxiliary/util/u_simple_list.h2
1 files changed, 2 insertions, 0 deletions
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)
/**