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