From 87b1990e4092e88a2bbca6e2b35d8e3f2921d685 Mon Sep 17 00:00:00 2001
From: Lars-Dominik Braun <PromyLOPh@gmail.com>
Date: Sat, 19 Jul 2008 12:22:22 +0200
Subject: piano: Fix possible memory leak

*Every* xml parser uses XmlInitDoc to create a doc handle, but nobody frees
it when an error is reported.
---
 libpiano/src/xml.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

(limited to 'libpiano/src')

diff --git a/libpiano/src/xml.c b/libpiano/src/xml.c
index d0faca6..33c2dde 100644
--- a/libpiano/src/xml.c
+++ b/libpiano/src/xml.c
@@ -146,7 +146,7 @@ void PianoXmlStructParser (xmlNode *structRoot,
  *	@param xml document
  *	@param returns document pointer (needed to free memory later)
  *	@param returns document root
- *	@return _RET_ERR or _RET_OK
+ *	@return _OK or error
  */
 PianoReturn_t PianoXmlInitDoc (char *xml, xmlDocPtr *doc, xmlNode **docRoot) {
 	*doc = xmlReadDoc ((xmlChar *) xml, NULL, NULL, 0);
@@ -160,6 +160,7 @@ PianoReturn_t PianoXmlInitDoc (char *xml, xmlDocPtr *doc, xmlNode **docRoot) {
 	*docRoot = xmlDocGetRootElement (*doc);
 
 	if ((ret = PianoXmlIsFault (*docRoot)) != PIANO_RET_OK) {
+		xmlFreeDoc (*doc);
 		return ret;
 	}
 
-- 
cgit v1.2.3