From 234471c3fcc5db7eac921cd938bf1b14ef7c96c2 Mon Sep 17 00:00:00 2001 From: Ted John Date: Sat, 9 Jul 2016 15:57:48 +0100 Subject: [PATCH] cope with same loaded object for multiple slots --- src/object/ObjectManager.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/object/ObjectManager.cpp b/src/object/ObjectManager.cpp index 8045ea11cb..6c2c790a96 100644 --- a/src/object/ObjectManager.cpp +++ b/src/object/ObjectManager.cpp @@ -156,8 +156,6 @@ public: size_t index = GetLoadedObjectIndex(loadedObject); UnloadObject(loadedObject); - _loadedObjects[index] = nullptr; - numObjectsUnloaded++; } } @@ -177,7 +175,6 @@ public: for (int i = 0; i < OBJECT_ENTRY_COUNT; i++) { UnloadObject(_loadedObjects[i]); - _loadedObjects[i] = nullptr; } } UpdateLegacyLoadedObjectList(); @@ -263,6 +260,19 @@ private: object->Unload(); delete object; + + // Because its possible to have the same loaded object for multiple + // slots, we have to make sure find and set all of them to nullptr + if (_loadedObjects != nullptr) + { + for (size_t i = 0; i < OBJECT_ENTRY_COUNT; i++) + { + if (_loadedObjects[i] == object) + { + _loadedObjects[i] = nullptr; + } + } + } } } @@ -296,7 +306,6 @@ private: if (exceptSet.find(object) == exceptSet.end()) { UnloadObject(object); - _loadedObjects[i] = nullptr; numObjectsUnloaded++; } }