Changeset: 4739b6d22925 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4739b6d22925
Modified Files:
        monetdb5/modules/atoms/batxml.c
Branch: default
Log Message:

Coverity detected leaking issue


diffs (143 lines):

diff --git a/monetdb5/modules/atoms/batxml.c b/monetdb5/modules/atoms/batxml.c
--- a/monetdb5/modules/atoms/batxml.c
+++ b/monetdb5/modules/atoms/batxml.c
@@ -77,11 +77,12 @@ batxml_export str AGGRsubxmlcand(bat *re
 batxml_export str AGGRsubxml(bat *retval, bat *bid, bat *gid, bat *eid, bit 
*skip_nils);
 
 
-#define prepareResult(X,Y,tpe,Z)                                       \
+#define prepareResult(X,Y,tpe,Z, Freeup)                                       
\
        assert((Y)->htype == TYPE_void);                                \
     (X) = BATnew(TYPE_void, (tpe), BATcount(Y));       \
     if ((X) == NULL) {                                                         
\
         BBPreleaseref((Y)->batCacheid);                                \
+               Freeup;                                     \
         throw(MAL, "xml." Z, MAL_MALLOC_FAIL); \
     }                                                                          
                \
        BATseqbase((X), (Y)->hseqbase);                                 \
@@ -108,7 +109,7 @@ BATXMLxml2str(bat *ret, const bat *bid)
 
        if ((b = BATdescriptor(*bid)) == NULL)
                throw(MAL, "xml.str", INTERNAL_BAT_ACCESS);
-       prepareResult(bn, b, TYPE_str, "str");
+       prepareResult(bn, b, TYPE_str, "str",);
        bi = bat_iterator(b);
        BATloop(b, p, q) {
                const void *h = (const void *) BUNhead(bi, p);
@@ -145,7 +146,7 @@ BATXMLxmltext(bat *ret, const bat *bid)
 
        if ((b = BATdescriptor(*bid)) == NULL)
                throw(MAL, "xml.text", INTERNAL_BAT_ACCESS);
-       prepareResult(bn, b, TYPE_str, "text");
+       prepareResult(bn, b, TYPE_str, "text",);
        bi = bat_iterator(b);
        BATloop(b, p, q) {
                const void *h = (const void *) BUNhead(bi, p);
@@ -255,7 +256,7 @@ BATXMLstr2xml(bat *ret, const bat *bid)
                GDKfree(buf);
                throw(MAL, "xml.xml", INTERNAL_BAT_ACCESS);
        }
-       prepareResult(bn, b, TYPE_xml, "xml");
+       prepareResult(bn, b, TYPE_xml, "xml",GDKfree(buf));
        bi = bat_iterator(b);
        BATloop(b, p, q) {
                const void *h = (const void *) BUNhead(bi, p);
@@ -309,7 +310,7 @@ BATXMLdocument(bat *ret, const bat *bid)
                GDKfree(buf);
                throw(MAL, "xml.document", INTERNAL_BAT_ACCESS);
        }
-       prepareResult(bn, b, TYPE_xml, "document");
+       prepareResult(bn, b, TYPE_xml, "document", GDKfree(buf));
        bi = bat_iterator(b);
        BATloop(b, p, q) {
                const void *h = (const void *) BUNhead(bi, p);
@@ -375,7 +376,7 @@ BATXMLcontent(bat *ret, const bat *bid)
        }
        doc = xmlParseMemory("<doc/>", 6);
        root = xmlDocGetRootElement(doc);
-       prepareResult(bn, b, TYPE_xml, "content");
+       prepareResult(bn, b, TYPE_xml, "content", GDKfree(buf));
        bi = bat_iterator(b);
        xbuf = xmlBufferCreate();
        BATloop(b, p, q) {
@@ -439,7 +440,7 @@ BATXMLisdocument(bat *ret, const bat *bi
 
        if ((b = BATdescriptor(*bid)) == NULL)
                throw(MAL, "xml.isdocument", INTERNAL_BAT_ACCESS);
-       prepareResult(bn, b, TYPE_bit, "isdocument");
+       prepareResult(bn, b, TYPE_bit, "isdocument",);
        bi = bat_iterator(b);
        BATloop(b, p, q) {
                const void *h = (const void *) BUNhead(bi, p);
@@ -504,7 +505,7 @@ BATXMLoptions(bat *ret, const char * con
                GDKfree(buf);
                throw(MAL, "xml.options", INTERNAL_BAT_ACCESS);
        }
-       prepareResult(bn, b, TYPE_xml, "options");
+       prepareResult(bn, b, TYPE_xml, "options", GDKfree(buf);GDKfree(val));
 
        if (strcmp(*options, "absent") == 0)
                buf[0] = 0;
@@ -571,7 +572,7 @@ BATXMLcomment(bat *ret, const bat *bid)
                GDKfree(buf);
                throw(MAL, "xml.comment", INTERNAL_BAT_ACCESS);
        }
-       prepareResult(bn, b, TYPE_xml, "comment");
+       prepareResult(bn, b, TYPE_xml, "comment", GDKfree(buf));
        bi = bat_iterator(b);
        BATloop(b, p, q) {
                const void *h = (const void *) BUNhead(bi, p);
@@ -646,7 +647,7 @@ BATXMLpi(bat *ret, const char * const *t
                GDKfree(buf);
                throw(MAL, "xml.pi", INTERNAL_BAT_ACCESS);
        }
-       prepareResult(bn, b, TYPE_xml, "pi");
+       prepareResult(bn, b, TYPE_xml, "pi", GDKfree(buf));
        bi = bat_iterator(b);
        BATloop(b, p, q) {
                const void *h = (const void *) BUNhead(bi, p);
@@ -716,7 +717,7 @@ BATXMLroot(bat *ret, const bat *bid, con
                GDKfree(buf);
                throw(MAL, "xml.pi", INTERNAL_BAT_ACCESS);
        }
-       prepareResult(bn, b, TYPE_xml, "pi");
+       prepareResult(bn, b, TYPE_xml, "pi", GDKfree(buf));
        bi = bat_iterator(b);
        BATloop(b, p, q) {
                const void *h = (const void *) BUNhead(bi, p);
@@ -793,7 +794,7 @@ BATXMLattribute(bat *ret, const char * c
                GDKfree(buf);
                throw(MAL, "xml.attribute", INTERNAL_BAT_ACCESS);
        }
-       prepareResult(bn, b, TYPE_xml, "attribute");
+       prepareResult(bn, b, TYPE_xml, "attribute", GDKfree(buf));
        bi = bat_iterator(b);
        BATloop(b, p, q) {
                const void *h = (const void *) BUNhead(bi, p);
@@ -871,7 +872,7 @@ BATXMLelement(bat *ret, const char * con
                GDKfree(buf);
                throw(MAL, "xml.element", INTERNAL_BAT_ACCESS);
        }
-       prepareResult(bn, b, TYPE_xml, "element");
+       prepareResult(bn, b, TYPE_xml, "element", GDKfree(buf));
        bi = bat_iterator(b);
        BATloop(b, p, q) {
                const void *h = (const void *) BUNhead(bi, p);
@@ -979,7 +980,7 @@ BATXMLforest(Client cntxt, MalBlkPtr mb,
                throw(MAL, "xml.forest", INTERNAL_BAT_ACCESS);
        }
 
-       prepareResult(bn, bi[pci->retc].b, TYPE_xml, "forest");
+       prepareResult(bn, bi[pci->retc].b, TYPE_xml, "forest", 
GDKfree(bi);GDKfree(p);GDKfree(q);GDKfree(buf));
 
        while (p[pci->retc] < q[pci->retc]) {
                const char *t;
@@ -1072,7 +1073,7 @@ BATXMLconcat(bat *ret, const bat *bid, c
        q = BUNlast(b);
        rp = BUNfirst(r);
 
-       prepareResult(bn, b, TYPE_xml, "concat");
+       prepareResult(bn, b, TYPE_xml, "concat", GDKfree(buf));
 
        bi = bat_iterator(b);
        ri = bat_iterator(r);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to