diff --git a/.pick_status.json b/.pick_status.json index 202ed9e12fb..e2450f341f3 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -3433,7 +3433,7 @@ "description": "util/set: Fix the _mesa_set_clear function to not leave tombstones.", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "5c075b085585b1629022d40ce7af9448c7d0e906" }, diff --git a/src/util/set.c b/src/util/set.c index ffe0fe808ea..d100f3d4b2e 100644 --- a/src/util/set.c +++ b/src/util/set.c @@ -203,13 +203,17 @@ _mesa_set_clear(struct set *set, void (*delete_function)(struct set_entry *entry if (!set) return; - set_foreach (set, entry) { - if (delete_function) + struct set_entry *entry; + + for (entry = set->table; entry != set->table + set->size; entry++) { + if (entry_is_present(entry) && delete_function != NULL) delete_function(entry); - entry->key = deleted_key; + + entry->key = NULL; } - set->entries = set->deleted_entries = 0; + set->entries = 0; + set->deleted_entries = 0; } /**