diff options
author | Marek Olšák <[email protected]> | 2010-09-23 20:39:27 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2010-09-24 02:29:04 +0200 |
commit | 68afbe89c72d085dcbbf2b264f0201ab73fe339e (patch) | |
tree | fdae0d53a496ad326cc2e3f3abaac11597931e0f /src/gallium/auxiliary/util | |
parent | f46523e0bcdfe447b4a9a35fe1561490fa32c3f0 (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.
Diffstat (limited to 'src/gallium/auxiliary/util')
-rw-r--r-- | src/gallium/auxiliary/util/u_simple_list.h | 2 |
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) /** |