Changeset: f24e0b7531ec for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f24e0b7531ec
Modified Files:
        geom/monetdb5/geom.c
Branch: geo-update
Log Message:

free things that should be freed.

The malloc and free of geomSTR is accepted since it's only for debug


diffs (70 lines):

diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -5247,6 +5247,7 @@ static str wkbUnionAggrSubGroupedCand(ba
        const char *err;
        const oid *gids = NULL;
        BATiter bi;
+       wkb **unions = NULL;
 
        //TODO Do we need to use skip_nils?
        (void)skip_nils;
@@ -5271,15 +5272,18 @@ static str wkbUnionAggrSubGroupedCand(ba
        }
 
        //Create a new BAT column of wkb type, with lenght equal to the number 
of groups
-       if (((out = COLnew(min, ATOMindex("wkb"), ngrp, TRANSIENT))) == NULL)
-       {
-               createException(MAL, "geom.Union", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
+       if ((out = COLnew(min, ATOMindex("wkb"), ngrp, TRANSIENT)) == NULL)
+       {
+               msg = createException(MAL, "geom.Union", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
                goto free;
        }
 
        //Allocate space for the intermediate unions of wkb's
-       wkb **unions;
-       unions = GDKzalloc(sizeof(wkb *) * ngrp);
+       if ((unions = GDKzalloc(sizeof(wkb *) * ngrp)) == NULL)
+       {
+               msg = createException(MAL, "geom.Union", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
+               goto free;
+       }
 
        if (g && !BATtdense(g))
                gids = (const oid *)Tloc(g, 0);
@@ -5294,10 +5298,13 @@ static str wkbUnionAggrSubGroupedCand(ba
                //Determine the group id
                oid grp = gids ? gids[p] : g ? min + (oid)p : 0;
 
+#ifndef NDEBUG
                char *geomSTR;
                wkbAsText(&geomSTR, &inWKB, NULL);
                printf("Row %zu: %s\n", i, geomSTR);
                fflush(stdout);
+               GDKfree(geomSTR);
+#endif
 
                if (unions[grp] == NULL)
                {
@@ -5323,9 +5330,6 @@ static str wkbUnionAggrSubGroupedCand(ba
        if (BUNappendmulti(out, unions, ngrp, false) != GDK_SUCCEED)
        {
                msg = createException(MAL, "geom.Union", SQLSTATE(38000) 
"BUNappend operation failed");
-               for (BUN i = 0; i < ngrp; i++)
-                       GDKfree(unions[i]);
-               GDKfree(unions);
                goto free;
        }
 
@@ -5351,6 +5355,10 @@ free:
                BBPunfix(e->batCacheid);
        if (s)
                BBPunfix(s->batCacheid);
+       if (unions)
+               for (BUN i = 0; i < ngrp; i++)
+                       GDKfree(unions[i]);
+               GDKfree(unions);
        return msg;
 }
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to