Changeset: a4c56c3fd26d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a4c56c3fd26d
Modified Files:
        gdk/gdk.h
        gdk/gdk_align.c
        monetdb5/modules/mal/mat.c
        sql/backends/monet5/sql.c
        sql/storage/bat/bat_storage.c
        sql/storage/bat/bat_table.c
Branch: default
Log Message:

Check ALL calls to BATappend and add GCC attribute.


diffs (179 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1263,7 +1263,8 @@ gdk_export bte ATOMelmshift(int sz);
 gdk_export gdk_return GDKupgradevarheap(BAT *b, var_t v, int copyall, int 
mayshare);
 gdk_export gdk_return BUNappend(BAT *b, const void *right, bit force)
        __attribute__ ((__warn_unused_result__));
-gdk_export gdk_return BATappend(BAT *b, BAT *n, BAT *s, bit force);
+gdk_export gdk_return BATappend(BAT *b, BAT *n, BAT *s, bit force)
+       __attribute__ ((__warn_unused_result__));
 
 gdk_export gdk_return BUNdelete(BAT *b, oid o);
 gdk_export gdk_return BATdel(BAT *b, BAT *d);
diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c
--- a/gdk/gdk_align.c
+++ b/gdk/gdk_align.c
@@ -421,7 +421,8 @@ VIEWreset(BAT *b)
                b->batCapacity = cnt;
 
                /* insert all of v in b, and quit */
-               BATappend(b, v, NULL, FALSE);
+               if (BATappend(b, v, NULL, FALSE) != GDK_SUCCEED)
+                       goto bailout;
                BBPreclaim(v);
        }
        return GDK_SUCCEED;
diff --git a/monetdb5/modules/mal/mat.c b/monetdb5/modules/mal/mat.c
--- a/monetdb5/modules/mal/mat.c
+++ b/monetdb5/modules/mal/mat.c
@@ -77,7 +77,11 @@ MATpackInternal(Client cntxt, MalBlkPtr 
                                BAThseqbase(bn, b->hseqbase);
                                BATtseqbase(bn, b->tseqbase);
                        }
-                       BATappend(bn, b, NULL, FALSE);
+                       if (BATappend(bn, b, NULL, FALSE) != GDK_SUCCEED) {
+                               BBPunfix(bn->batCacheid);
+                               BBPunfix(b->batCacheid);
+                               throw(MAL, "mat.pack", GDK_EXCEPTION);
+                       }
                        BBPunfix(b->batCacheid);
                }
        }
@@ -117,7 +121,11 @@ MATpackIncrement(Client cntxt, MalBlkPtr
                                throw(MAL, "mat.pack", MAL_MALLOC_FAIL);
                }
                BATtseqbase(bn, b->tseqbase);
-               BATappend(bn, b, NULL, FALSE);
+               if (BATappend(bn, b, NULL, FALSE) != GDK_SUCCEED) {
+                       BBPunfix(bn->batCacheid);
+                       BBPunfix(b->batCacheid);
+                       throw(MAL, "mat.pack", GDK_EXCEPTION);
+               }
                assert(!bn->tnil || !bn->tnonil);
                bn->S.unused = (pieces-1); /* misuse "unused" field */
                BBPkeepref(*ret = bn->batCacheid);
@@ -130,7 +138,11 @@ MATpackIncrement(Client cntxt, MalBlkPtr
                                BAThseqbase(b, bb->hseqbase);
                                BATtseqbase(b, bb->tseqbase);
                        }
-                       BATappend(b, bb, NULL, FALSE);
+                       if (BATappend(b, bb, NULL, FALSE) != GDK_SUCCEED) {
+                               BBPunfix(bb->batCacheid);
+                               BBPunfix(b->batCacheid);
+                               throw(MAL, "mat.pack", GDK_EXCEPTION);
+                       }
                }
                b->S.unused--;
                if(b->S.unused == 0)
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -1288,7 +1288,11 @@ DELTAbat(bat *result, const bat *col, co
 
        if (i && BATcount(i)) {
                i = BATdescriptor(*ins);
-               BATappend(res, i, NULL, TRUE);
+               if (BATappend(res, i, NULL, TRUE) != GDK_SUCCEED) {
+                       BBPunfix(res->batCacheid);
+                       BBPunfix(i->batCacheid);
+                       throw(MAL, "sql.delta", GDK_EXCEPTION);
+               }
                BBPunfix(i->batCacheid);
        }
 
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -640,10 +640,16 @@ delta_append_bat( sql_delta *bat, BAT *i
                }
                if (isVIEW(i) && b->batCacheid == VIEWtparent(i)) {
                        BAT *ic = COLcopy(i, i->ttype, TRUE, TRANSIENT);
-                       BATappend(b, ic, NULL, TRUE);
+                       if (BATappend(b, ic, NULL, TRUE) != GDK_SUCCEED) {
+                               bat_destroy(ic);
+                               bat_destroy(b);
+                               return LOG_ERR;
+                       }
                        bat_destroy(ic);
-               } else 
-                       BATappend(b, i, NULL, TRUE);
+               } else if (BATappend(b, i, NULL, TRUE) != GDK_SUCCEED) {
+                       bat_destroy(b);
+                       return LOG_ERR;
+               }
                assert(BUNlast(b) > b->batInserted);
                bat_destroy(b);
        }
@@ -835,7 +841,10 @@ delta_delete_bat( sql_dbat *bat, BAT *i 
                b = temp_descriptor(bat->dbid);
        }
        assert(b->theap.storage != STORE_PRIV);
-       BATappend(b, i, NULL, TRUE);
+       if (BATappend(b, i, NULL, TRUE) != GDK_SUCCEED) {
+               bat_destroy(b);
+               return LOG_ERR;
+       }
        BATkey(b, TRUE);
        bat_destroy(b);
 
@@ -1892,7 +1901,11 @@ gtr_update_delta( sql_trans *tr, sql_del
        if (BUNlast(ins) > 0) {
                (*changes)++;
                assert(cur->theap.storage != STORE_PRIV);
-               BATappend(cur, ins, NULL, TRUE);
+               if (BATappend(cur, ins, NULL, TRUE) != GDK_SUCCEED) {
+                       bat_destroy(ins);
+                       bat_destroy(cur);
+                       return LOG_ERR;
+               }
                cbat->cnt = cbat->ibase = BATcount(cur);
                BATcleanProps(cur);
                temp_destroy(cbat->ibid);
@@ -2147,7 +2160,11 @@ tr_update_delta( sql_trans *tr, sql_delt
                        assert((BATcount(cur) + BATcount(ins)) == cbat->cnt);
                        //assert((BATcount(cur) + BATcount(ins)) == (obat->cnt 
+ (BUNlast(ins) - ins->batInserted)));
                        assert(!BATcount(ins) || !isEbat(ins));
-                       BATappend(cur, ins, NULL, TRUE);
+                       if (BATappend(cur, ins, NULL, TRUE) != GDK_SUCCEED) {
+                               bat_destroy(cur);
+                               bat_destroy(ins);
+                               return LOG_ERR;
+                       }
                        BATcleanProps(cur);
                        temp_destroy(cbat->bid);
                        temp_destroy(cbat->ibid);
@@ -2227,7 +2244,11 @@ tr_merge_delta( sql_trans *tr, sql_delta
                        ins = cur;
                        cur = newcur;
                } else {
-                       BATappend(cur, ins, NULL, TRUE);
+                       if (BATappend(cur, ins, NULL, TRUE) != GDK_SUCCEED) {
+                               bat_destroy(cur);
+                               bat_destroy(ins);
+                               return LOG_ERR;
+                       }
                        BATcleanProps(cur);
                        if (cur->batPersistence == PERSISTENT)
                                BATmsync(cur);
diff --git a/sql/storage/bat/bat_table.c b/sql/storage/bat/bat_table.c
--- a/sql/storage/bat/bat_table.c
+++ b/sql/storage/bat/bat_table.c
@@ -83,8 +83,16 @@ delta_full_bat_( sql_column *c, sql_delt
                if (BATcount(i)) {
                        r = COLcopy(b, b->ttype, 1, TRANSIENT); 
                        bat_destroy(b); 
+                       if (r == NULL) {
+                               bat_destroy(i);
+                               return NULL;
+                       }
                        b = r;
-                       BATappend(b, i, NULL, TRUE);
+                       if (BATappend(b, i, NULL, TRUE) != GDK_SUCCEED) {
+                               bat_destroy(b);
+                               bat_destroy(i);
+                               return NULL;
+                       }
                        needcopy = 0;
                }
                bat_destroy(i); 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to