From d51c2e6435d5fe2bcd36c8dc05fd7a63da4bc3e4 Mon Sep 17 00:00:00 2001 From: wise86Android Date: Sat, 16 Jan 2016 15:02:45 +0100 Subject: [PATCH] free the allocated import --- code/Assimp.cpp | 4 ++++ code/Importer.cpp | 6 +++--- code/ImporterRegistry.cpp | 8 ++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/code/Assimp.cpp b/code/Assimp.cpp index 224c75b2e..13560fda6 100644 --- a/code/Assimp.cpp +++ b/code/Assimp.cpp @@ -96,6 +96,8 @@ namespace Assimp /** will return all registered importers. */ void GetImporterInstanceList(std::vector< BaseImporter* >& out); + /** will delete all registered importers. */ + void DeleteImporterInstanceList(std::vector< BaseImporter* >& out); } // namespace assimp @@ -648,6 +650,8 @@ ASSIMP_API C_STRUCT const aiImporterDesc* aiGetImporterDesc( const char *extensi } } + DeleteImporterInstanceList(out); + return desc; } diff --git a/code/Importer.cpp b/code/Importer.cpp index 3aecac241..0e4561dd4 100644 --- a/code/Importer.cpp +++ b/code/Importer.cpp @@ -90,6 +90,8 @@ using namespace Assimp::Formatter; namespace Assimp { // ImporterRegistry.cpp void GetImporterInstanceList(std::vector< BaseImporter* >& out); + void DeleteImporterInstanceList(std::vector< BaseImporter* >& out); + // PostStepRegistry.cpp void GetPostProcessingStepInstanceList(std::vector< BaseProcess* >& out); } @@ -173,8 +175,7 @@ Importer::Importer() Importer::~Importer() { // Delete all import plugins - for( unsigned int a = 0; a < pimpl->mImporter.size(); a++) - delete pimpl->mImporter[a]; + DeleteImporterInstanceList(pimpl->mImporter); // Delete all post-processing plug-ins for( unsigned int a = 0; a < pimpl->mPostProcessingSteps.size(); a++) @@ -1113,4 +1114,3 @@ void Importer::GetMemoryRequirements(aiMemoryInfo& in) const } in.total += in.materials; } - diff --git a/code/ImporterRegistry.cpp b/code/ImporterRegistry.cpp index 64a697267..380028f07 100644 --- a/code/ImporterRegistry.cpp +++ b/code/ImporterRegistry.cpp @@ -321,4 +321,12 @@ void GetImporterInstanceList(std::vector< BaseImporter* >& out) #endif } +/** will delete all registered importers. */ +void DeleteImporterInstanceList(std::vector< BaseImporter* >& deleteList){ + for(size_t i= 0; i