Merge pull request #2927 from malortie/mdl-fix-buffer-memory-leak
Fixed memory leak in MDL importer.pull/2910/head^2
commit
8177706716
|
@ -185,6 +185,17 @@ void MDLImporter::InternReadFile( const std::string& pFile,
|
||||||
throw DeadlyImportError( "MDL File is too small.");
|
throw DeadlyImportError( "MDL File is too small.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// delete the file buffer and cleanup.
|
||||||
|
auto DeleteBufferAndCleanup = [&]() {
|
||||||
|
if (mBuffer) {
|
||||||
|
delete [] mBuffer;
|
||||||
|
mBuffer = nullptr;
|
||||||
|
}
|
||||||
|
AI_DEBUG_INVALIDATE_PTR(pIOHandler);
|
||||||
|
AI_DEBUG_INVALIDATE_PTR(pScene);
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
// Allocate storage and copy the contents of the file to a memory buffer
|
// Allocate storage and copy the contents of the file to a memory buffer
|
||||||
mBuffer = new unsigned char[iFileSize+1];
|
mBuffer = new unsigned char[iFileSize+1];
|
||||||
file->Read( (void*)mBuffer, 1, iFileSize);
|
file->Read( (void*)mBuffer, 1, iFileSize);
|
||||||
|
@ -261,11 +272,11 @@ void MDLImporter::InternReadFile( const std::string& pFile,
|
||||||
pScene->mRootNode->mTransformation = aiMatrix4x4(1.f,0.f,0.f,0.f,
|
pScene->mRootNode->mTransformation = aiMatrix4x4(1.f,0.f,0.f,0.f,
|
||||||
0.f,0.f,1.f,0.f,0.f,-1.f,0.f,0.f,0.f,0.f,0.f,1.f);
|
0.f,0.f,1.f,0.f,0.f,-1.f,0.f,0.f,0.f,0.f,0.f,1.f);
|
||||||
|
|
||||||
// delete the file buffer and cleanup
|
DeleteBufferAndCleanup();
|
||||||
delete [] mBuffer;
|
} catch(...) {
|
||||||
mBuffer= nullptr;
|
DeleteBufferAndCleanup();
|
||||||
AI_DEBUG_INVALIDATE_PTR(pIOHandler);
|
throw;
|
||||||
AI_DEBUG_INVALIDATE_PTR(pScene);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue