From 2cd3da4831cf379896f7dede82849e6507812091 Mon Sep 17 00:00:00 2001 From: Anton Vaneev Date: Thu, 16 Feb 2023 11:21:29 +0100 Subject: [PATCH] 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. --- code/AssetLib/FBX/FBXDocument.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/AssetLib/FBX/FBXDocument.cpp b/code/AssetLib/FBX/FBXDocument.cpp index a71c4b959..ea39a9a00 100644 --- a/code/AssetLib/FBX/FBXDocument.cpp +++ b/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);