From 7111f40e544ad1c8cbc456fb327d1048273adedc Mon Sep 17 00:00:00 2001 From: Sevenfm Date: Thu, 13 Aug 2020 02:33:39 +0000 Subject: [PATCH] Fixed a few very minor memory leaks. (by Asdow) git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8882 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- .../LogicalBodyTypes/AbstractXMLLoader.cpp | 3 ++ Tactical/LogicalBodyTypes/PaletteTable.cpp | 41 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/Tactical/LogicalBodyTypes/AbstractXMLLoader.cpp b/Tactical/LogicalBodyTypes/AbstractXMLLoader.cpp index c1eb1ea4..ab182259 100644 --- a/Tactical/LogicalBodyTypes/AbstractXMLLoader.cpp +++ b/Tactical/LogicalBodyTypes/AbstractXMLLoader.cpp @@ -131,6 +131,7 @@ int XMLCALL AbstractXMLLoader::ExternalEntityHandler(XML_Parser args, const XML_ CHAR8 errorBuf[512]; sprintf(errorBuf, "XML Parser Error in external entity %s[%d]: %s", systemId, XML_GetCurrentLineNumber(extParser), XML_ErrorString(XML_GetErrorCode(extParser))); LiveMessage(errorBuf); + MemFree(lpcBuffer); return XML_STATUS_ERROR; } } catch (XMLParseException e) { @@ -138,10 +139,12 @@ int XMLCALL AbstractXMLLoader::ExternalEntityHandler(XML_Parser args, const XML_ sprintf(errorBuf, "XML Parser Exception in external entity %s[%d]: %s", systemId, e._LINE, e.what()); LiveMessage(errorBuf); XML_ParserFree(extParser); + MemFree(lpcBuffer); return XML_STATUS_ERROR; } data->pParser = eArgs->pParser; XML_ParserFree(extParser); + MemFree(lpcBuffer); return XML_STATUS_OK; }; diff --git a/Tactical/LogicalBodyTypes/PaletteTable.cpp b/Tactical/LogicalBodyTypes/PaletteTable.cpp index d4608013..b0ab7279 100644 --- a/Tactical/LogicalBodyTypes/PaletteTable.cpp +++ b/Tactical/LogicalBodyTypes/PaletteTable.cpp @@ -6,6 +6,47 @@ PaletteTable::PaletteTable() { } PaletteTable::~PaletteTable() { + // FREE PALETTES + if (this->p8BPPPalette != NULL) + { + MemFree(this->p8BPPPalette); + this->p8BPPPalette = NULL; + } + + if (this->p16BPPPalette != NULL) + { + MemFree(this->p16BPPPalette); + this->p16BPPPalette = NULL; + } + + for (int cnt = 0; cnt < NUM_SOLDIER_SHADES; cnt++) + { + if (this->pShades[cnt] != NULL) + { + MemFree(this->pShades[cnt]); + this->pShades[cnt] = NULL; + } + } + + for (int cnt = 0; cnt < NUM_SOLDIER_EFFECTSHADES; cnt++) + { + if (this->pEffectShades[cnt] != NULL) + { + MemFree(this->pEffectShades[cnt]); + this->pEffectShades[cnt] = NULL; + } + } + + // Delete glows + for (int cnt = 0; cnt < 20; cnt++) + { + if (this->pGlowShades[cnt] != NULL) + { + MemFree(this->pGlowShades[cnt]); + this->pGlowShades[cnt] = NULL; + } + + } } bool PaletteTable::CreateSGPPaletteFromActFile(SGPPaletteEntry *pPalette, std::string fileName) {