Fix major memory leak in prss.c
authorCesare Tirabassi <norsetto@ubuntu.com>
Tue, 4 Aug 2009 12:26:33 +0000 (14:26 +0200)
committerCesare Tirabassi <norsetto@ubuntu.com>
Tue, 4 Aug 2009 12:28:24 +0000 (14:28 +0200)
src/prss.c
src/prss.h

index 2e1853a..a0bfaa9 100644 (file)
@@ -41,6 +41,7 @@ void prss_parse_data(void *result, const char *xml_data)
        }
 
        prss_parse_doc(data, doc);
+       xmlFreeDoc(doc);
 }
 
 void prss_free(PRSS *data)
@@ -48,7 +49,6 @@ void prss_free(PRSS *data)
        if (!data) {
                return;
        }
-       xmlFreeDoc(data->_data);
        free(data->version);
        free(data->items);
 }
@@ -213,13 +213,9 @@ static inline int parse_rss_0_9x(PRSS *res, xmlNodePtr root)
 
 void prss_parse_doc(PRSS *result, xmlDocPtr doc)
 {
-       /* FIXME: doc shouldn't be freed after failure when called explicitly from
-        * program! */
-
        xmlNodePtr root = xmlDocGetRootElement(doc);
 
        prss_null(result);
-       result->_data = doc;
        do {
                if (root->type == XML_ELEMENT_NODE) {
                        if (!strcmp((const char *) root->name, "RDF")) {
index 53b8b4b..322c12c 100644 (file)
@@ -30,7 +30,6 @@ typedef struct PRSS_Item_ {
 } PRSS_Item;
 
 typedef struct PRSS_ {
-       xmlDocPtr _data;
        char *version;
 
        char *title;