From 102486005ddb9665458dd4d63adf73e35fe95552 Mon Sep 17 00:00:00 2001 From: Jeka Vlasov Date: Wed, 15 Aug 2018 02:27:56 +0300 Subject: [PATCH] Fix memory leak on throw --- code/ObjFileImporter.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/code/ObjFileImporter.cpp b/code/ObjFileImporter.cpp index c64518efe..2b6730e4e 100644 --- a/code/ObjFileImporter.cpp +++ b/code/ObjFileImporter.cpp @@ -228,18 +228,12 @@ void ObjFileImporter::CreateDataFromImport(const ObjFile::Model* pModel, aiScene // Create all materials createMaterials(pModel, pScene); }else { - if (pModel->m_Vertices.empty()) - return; + if (pModel->m_Vertices.empty()){ + return; + } - aiMesh* mesh = new aiMesh(); + std::unique_ptr mesh( new aiMesh ); mesh->mPrimitiveTypes = aiPrimitiveType_POINT; - pScene->mRootNode->mNumMeshes = 1; - pScene->mRootNode->mMeshes = new unsigned int[1]; - pScene->mRootNode->mMeshes[0] = 0; - pScene->mMeshes = new aiMesh*[1]; - pScene->mNumMeshes = 1; - pScene->mMeshes[0] = mesh; - unsigned int n = pModel->m_Vertices.size(); mesh->mNumVertices = n; @@ -264,7 +258,14 @@ void ObjFileImporter::CreateDataFromImport(const ObjFile::Model* pModel, aiScene throw DeadlyImportError("OBJ: vertex color index out of range"); } } - } + } + + pScene->mRootNode->mNumMeshes = 1; + pScene->mRootNode->mMeshes = new unsigned int[1]; + pScene->mRootNode->mMeshes[0] = 0; + pScene->mMeshes = new aiMesh*[1]; + pScene->mNumMeshes = 1; + pScene->mMeshes[0] = mesh.release(); } }