java-topology/defects/xenia-0001/patch/xenia-0001.patch

30 lines
990 B
Diff

# UNDF: UNDF-2026-000001179
--- a/src/xenia/kernel/util/object_table.cc
+++ b/src/xenia/kernel/util/object_table.cc
@@ -9,6 +9,7 @@
#include "xenia/kernel/util/object_table.h"
+#include <unordered_set>
#include <algorithm>
#include <cstring>
@@ -219,13 +220,15 @@ std::vector<object_ref<XObject>> ObjectTable::GetAllObjects() {
std::vector<object_ref<XObject>> ObjectTable::GetAllObjects() {
auto lock = global_critical_region_.Acquire();
std::vector<object_ref<XObject>> results;
+ std::unordered_set<XObject*> seen;
for (uint32_t slot = 0; slot < table_capacity_; slot++) {
auto& entry = table_[slot];
- if (entry.object && std::find(results.begin(), results.end(),
- entry.object) == results.end()) {
+ if (entry.object && seen.find(entry.object) == seen.end()) {
+ seen.insert(entry.object);
entry.object->Retain();
results.push_back(object_ref<XObject>(entry.object));
}
}
return results;
}