Browse Source

i965: Fix infinite loop regression in intel_miptree_all_slices_resolve.

Commit 0ed11e3331 fixed a "use after free"
bug by getting the next pointer before deleting the current node.

Unfortunately, it also made "next" never get updated if i->need != need.

Fixes infinite loops in piglit tests fbo-depth-array and fbo-depthtex.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
tags/mesa-8.0-rc1
Kenneth Graunke 13 years ago
parent
commit
a0a0a909f2
1 changed files with 1 additions and 1 deletions
  1. 1
    1
      src/mesa/drivers/dri/intel/intel_mipmap_tree.c

+ 1
- 1
src/mesa/drivers/dri/intel/intel_mipmap_tree.c View File

@@ -643,10 +643,10 @@ intel_miptree_all_slices_resolve(struct intel_context *intel,
struct intel_resolve_map *i, *next;

for (i = mt->hiz_map.next; i; i = next) {
next = i->next;
if (i->need != need)
continue;
func(intel, mt, i->level, i->layer);
next = i->next;
intel_resolve_map_remove(i);
did_resolve = true;
}

Loading…
Cancel
Save