From 87b1990e4092e88a2bbca6e2b35d8e3f2921d685 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun 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') 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