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

Reply via email to