Changeset: 2c23198b088b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2c23198b088b
Modified Files:
monetdb5/extras/rdf/rdfschema.c
Branch: rdf
Log Message:
defensive programming: prevent BAT leaks
diffs (44 lines):
diff --git a/monetdb5/extras/rdf/rdfschema.c b/monetdb5/extras/rdf/rdfschema.c
--- a/monetdb5/extras/rdf/rdfschema.c
+++ b/monetdb5/extras/rdf/rdfschema.c
@@ -1752,16 +1752,23 @@ RDFextractCSwithTypes(int *ret, bat *sba
throw(MAL, "rdf.RDFextractCSwithTypes", RUNTIME_OBJECT_MISSING);
}
if (!(sbat->tsorted)){
- throw(MAL, "rdf.RDFextractCSwithTypes", "sbat is not sorted");
+ BBPreleaseref(sbat->batCacheid);
+ throw(MAL, "rdf.RDFextractCSwithTypes", "sbat is not sorted");
}
if ((pbat = BATdescriptor(*pbatid)) == NULL) {
+ BBPreleaseref(sbat->batCacheid);
throw(MAL, "rdf.RDFextractCSwithTypes", RUNTIME_OBJECT_MISSING);
}
if ((obat = BATdescriptor(*obatid)) == NULL) {
+ BBPreleaseref(sbat->batCacheid);
+ BBPreleaseref(pbat->batCacheid);
throw(MAL, "rdf.RDFextractCSwithTypes", RUNTIME_OBJECT_MISSING);
}
if ((mbat = BATdescriptor(*mapbatid)) == NULL) {
+ BBPreleaseref(sbat->batCacheid);
+ BBPreleaseref(pbat->batCacheid);
+ BBPreleaseref(obat->batCacheid);
throw(MAL, "rdf.RDFextractCSwithTypes", RUNTIME_OBJECT_MISSING);
}
@@ -1848,6 +1855,7 @@ RDFextractCSwithTypes(int *ret, bat *sba
BBPreclaim(sbat);
BBPreclaim(pbat);
BBPreclaim(obat);
+ BBPreclaim(mbat);
free (subjCSMap);
free (subjSubCSMap);
@@ -1887,6 +1895,7 @@ RDFextractPfromPSO(int *ret, bat *pbatid
throw(MAL, "rdf.RDFextractCS", RUNTIME_OBJECT_MISSING);
}
if ((pbat = BATdescriptor(*pbatid)) == NULL) {
+ BBPreleaseref(sbat->batCacheid);
throw(MAL, "rdf.RDFextractCS", RUNTIME_OBJECT_MISSING);
}
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list