Kaynağa Gözat

Fix a leak in FBXDocument when duplicate object IDs are found

When a duplicate ID is encountered, existing LazyObject is overwritten. Previously allocated instance leaks.

This change deletes the previously allocated instance before overwriting the pointer.
Anton Vaneev 2 yıl önce
ebeveyn
işleme
2cd3da4831
1 değiştirilmiş dosya ile 3 ekleme ve 1 silme
  1. 3 1
      code/AssetLib/FBX/FBXDocument.cpp

+ 3 - 1
code/AssetLib/FBX/FBXDocument.cpp

@@ -381,8 +381,10 @@ void Document::ReadObjects() {
             DOMError("encountered object with implicitly defined id 0",el.second);
         }
 
-        if(objects.find(id) != objects.end()) {
+        const auto foundObject = objects.find(id);
+        if(foundObject != objects.end()) {
             DOMWarning("encountered duplicate object id, ignoring first occurrence",el.second);
+            delete foundObject->second;
         }
 
         objects[id] = new LazyObject(id, *el.second, *this);