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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list