diff --git a/code/MDLMaterialLoader.cpp b/code/MDLMaterialLoader.cpp index 9086925aa..4d23d0aa6 100644 --- a/code/MDLMaterialLoader.cpp +++ b/code/MDLMaterialLoader.cpp @@ -56,6 +56,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "qnan.h" +#include + using namespace Assimp; static aiTexel* const bad_texel = reinterpret_cast(SIZE_MAX); @@ -489,7 +491,7 @@ void MDLImporter::ParseSkinLump_3DGS_MDL7( unsigned int iWidth, unsigned int iHeight) { - aiTexture* pcNew = nullptr; + std::unique_ptr pcNew; // get the type of the skin unsigned int iMasked = (unsigned int)(iType & 0xF); @@ -509,7 +511,7 @@ void MDLImporter::ParseSkinLump_3DGS_MDL7( "but texture height is not equal to 1, which is not supported by MED"); } - pcNew = new aiTexture(); + pcNew.reset(new aiTexture()); pcNew->mHeight = 0; pcNew->mWidth = iWidth; @@ -546,7 +548,7 @@ void MDLImporter::ParseSkinLump_3DGS_MDL7( } else if (iMasked || !iType || (iType && iWidth && iHeight)) { - pcNew = new aiTexture(); + pcNew.reset(new aiTexture()); if (!iHeight || !iWidth) { DefaultLogger::get()->warn("Found embedded texture, but its width " @@ -577,7 +579,7 @@ void MDLImporter::ParseSkinLump_3DGS_MDL7( pcNew->mHeight = iHeight; unsigned int iSkip = 0; - ParseTextureColorData(szCurrent,iMasked,&iSkip,pcNew); + ParseTextureColorData(szCurrent,iMasked,&iSkip,pcNew.get()); // skip length of texture data szCurrent += iSkip; @@ -588,7 +590,7 @@ void MDLImporter::ParseSkinLump_3DGS_MDL7( // texture instead of material colors ... posssible they have // been converted to MDL7 from other formats, such as MDL5 aiColor4D clrTexture; - if (pcNew)clrTexture = ReplaceTextureWithColor(pcNew); + if (pcNew)clrTexture = ReplaceTextureWithColor(pcNew.get()); else clrTexture.r = get_qnan(); // check whether a material definition is contained in the skin @@ -680,8 +682,7 @@ void MDLImporter::ParseSkinLump_3DGS_MDL7( // we don't need the texture anymore if (is_not_qnan(clrTexture.r)) { - delete pcNew; - pcNew = NULL; + pcNew.reset(); } // If an ASCII effect description (HLSL?) is contained in the file, @@ -716,7 +717,7 @@ void MDLImporter::ParseSkinLump_3DGS_MDL7( { pScene->mNumTextures = 1; pScene->mTextures = new aiTexture*[1]; - pScene->mTextures[0] = pcNew; + pScene->mTextures[0] = pcNew.release(); } else { @@ -726,16 +727,13 @@ void MDLImporter::ParseSkinLump_3DGS_MDL7( pScene->mTextures[i] = pc[i]; } - pScene->mTextures[pScene->mNumTextures] = pcNew; + pScene->mTextures[pScene->mNumTextures] = pcNew.release(); pScene->mNumTextures++; delete[] pc; } } VALIDATE_FILE_SIZE(szCurrent); *szCurrentOut = szCurrent; - if ( nullptr != pcNew ) { - delete pcNew; - } } // ------------------------------------------------------------------------------------------------