From ced6e8ce43f0efd5af30032e4dfbccdd973472df Mon Sep 17 00:00:00 2001 From: Alexandre Avenel Date: Sat, 30 Dec 2017 13:22:30 +0100 Subject: [PATCH] Use std::unique_ptr in ObjFileParser --- code/ObjFileParser.cpp | 14 +++++--------- code/ObjFileParser.h | 3 ++- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/code/ObjFileParser.cpp b/code/ObjFileParser.cpp index a8d92497d..2b9873bc1 100644 --- a/code/ObjFileParser.cpp +++ b/code/ObjFileParser.cpp @@ -60,7 +60,7 @@ const std::string ObjFileParser::DEFAULT_MATERIAL = AI_DEFAULT_MATERIAL_NAME; ObjFileParser::ObjFileParser() : m_DataIt() , m_DataItEnd() -, m_pModel( NULL ) +, m_pModel( nullptr ) , m_uiLine( 0 ) , m_pIO( nullptr ) , m_progress( nullptr ) @@ -73,7 +73,7 @@ ObjFileParser::ObjFileParser( IOStreamBuffer &streamBuffer, const std::str const std::string &originalObjFileName) : m_DataIt(), m_DataItEnd(), - m_pModel(NULL), + m_pModel(nullptr), m_uiLine(0), m_pIO( io ), m_progress(progress), @@ -82,7 +82,7 @@ ObjFileParser::ObjFileParser( IOStreamBuffer &streamBuffer, const std::str std::fill_n(m_buffer,Buffersize,0); // Create the model instance to store all the data - m_pModel = new ObjFile::Model(); + m_pModel.reset(new ObjFile::Model()); m_pModel->m_ModelName = modelName; // create default material and store it @@ -96,8 +96,6 @@ ObjFileParser::ObjFileParser( IOStreamBuffer &streamBuffer, const std::str } ObjFileParser::~ObjFileParser() { - delete m_pModel; - m_pModel = NULL; } void ObjFileParser::setBuffer( std::vector &buffer ) { @@ -106,7 +104,7 @@ void ObjFileParser::setBuffer( std::vector &buffer ) { } ObjFile::Model *ObjFileParser::GetModel() const { - return m_pModel; + return m_pModel.get(); } void ObjFileParser::parseFile( IOStreamBuffer &streamBuffer ) { @@ -479,8 +477,6 @@ void ObjFileParser::getFace( aiPrimitiveType type ) { } else { //On error, std::atoi will return 0 which is not a valid value delete face; - delete m_pModel; - m_pModel = nullptr; throw DeadlyImportError("OBJ: Invalid face indice"); } @@ -642,7 +638,7 @@ void ObjFileParser::getMaterialLib() { m_pIO->Close( pFile ); // Importing the material library - ObjFileMtlImporter mtlImporter( buffer, strMatName, m_pModel ); + ObjFileMtlImporter mtlImporter( buffer, strMatName, m_pModel.get() ); } // ------------------------------------------------------------------- diff --git a/code/ObjFileParser.h b/code/ObjFileParser.h index fa5b3ca31..15332a1df 100644 --- a/code/ObjFileParser.h +++ b/code/ObjFileParser.h @@ -44,6 +44,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include #include #include @@ -145,7 +146,7 @@ private: //! Iterator to end position of buffer DataArrayIt m_DataItEnd; //! Pointer to model instance - ObjFile::Model *m_pModel; + std::unique_ptr m_pModel; //! Current line (for debugging) unsigned int m_uiLine; //! Helper buffer