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) {