From 3e49f45ae0d8971cb3870f388d55ea67ff127400 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 3 Jun 2011 18:31:34 +0300 Subject: Fix memory leak in mapreader class. --- src/resources/mapreader.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/resources/mapreader.cpp') diff --git a/src/resources/mapreader.cpp b/src/resources/mapreader.cpp index fb0298457..098af0909 100644 --- a/src/resources/mapreader.cpp +++ b/src/resources/mapreader.cpp @@ -498,8 +498,8 @@ void MapReader::readLayer(xmlNodePtr node, Map *map) int len = static_cast(strlen( reinterpret_cast(dataChild->content)) + 1); unsigned char *charData = new unsigned char[len + 1]; - const char *charStart = reinterpret_cast( - xmlNodeGetContent(dataChild)); + xmlChar *xmlChars = xmlNodeGetContent(dataChild); + const char *charStart = reinterpret_cast(xmlChars); if (!charStart) { delete[] charData; @@ -526,6 +526,7 @@ void MapReader::readLayer(xmlNodePtr node, Map *map) charData))), &binLen); delete[] charData; + xmlFree(xmlChars); if (binData) { @@ -579,8 +580,8 @@ void MapReader::readLayer(xmlNodePtr node, Map *map) if (!dataChild) continue; - const char *data = reinterpret_cast( - xmlNodeGetContent(dataChild)); + xmlChar *xmlChars = xmlNodeGetContent(dataChild); + const char *data = reinterpret_cast(xmlChars); if (!data) return; @@ -611,6 +612,7 @@ void MapReader::readLayer(xmlNodePtr node, Map *map) oldPos = pos + 1; } + xmlFree(xmlChars); } else { -- cgit v1.2.3-60-g2f50