Changeset: 9e41b6cac318 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9e41b6cac318
Modified Files:
        monetdb5/modules/mal/tablet.c
Branch: Jun2016
Log Message:

Avoid accessing NULL BAT pointers


diffs (52 lines):

diff --git a/monetdb5/modules/mal/tablet.c b/monetdb5/modules/mal/tablet.c
--- a/monetdb5/modules/mal/tablet.c
+++ b/monetdb5/modules/mal/tablet.c
@@ -59,7 +59,7 @@ void_bat_create(int adt, BUN nr)
 
        /* check for correct structures */
        if (b == NULL)
-               return b;
+               return NULL;
        if (BATmirror(b))
                BATseqbase(b, 0);
        BATsetaccess(b, BAT_APPEND);
@@ -207,13 +207,13 @@ TABLETcreate_bats(Tablet *as, BUN est)
                if (fmt[i].skip)
                        continue;
                fmt[i].c = void_bat_create(fmt[i].adt, est);
-               fmt[i].ci = bat_iterator(fmt[i].c);
                if (!fmt[i].c) {
                        for (j = 0; j < i; j++)
                                if (!fmt[i].skip)
                                        BBPdecref(fmt[j].c->batCacheid, FALSE);
                        throw(SQL, "copy", "Failed to create bat of size " 
BUNFMT "\n", as->nr);
                }
+               fmt[i].ci = bat_iterator(fmt[i].c);
        }
        return MAL_SUCCEED;
 }
@@ -1588,13 +1588,9 @@ create_rejects_table(Client cntxt)
        MT_lock_set(&mal_contextLock);
        if (cntxt->error_row == NULL) {
                cntxt->error_row = BATnew(TYPE_void, TYPE_lng, 0, TRANSIENT);
-               BATseqbase(cntxt->error_row, 0);
                cntxt->error_fld = BATnew(TYPE_void, TYPE_int, 0, TRANSIENT);
-               BATseqbase(cntxt->error_fld, 0);
                cntxt->error_msg = BATnew(TYPE_void, TYPE_str, 0, TRANSIENT);
-               BATseqbase(cntxt->error_msg, 0);
                cntxt->error_input = BATnew(TYPE_void, TYPE_str, 0, TRANSIENT);
-               BATseqbase(cntxt->error_input, 0);
                if (cntxt->error_row == NULL || cntxt->error_fld == NULL || 
cntxt->error_msg == NULL || cntxt->error_input == NULL) {
                        if (cntxt->error_row)
                                BBPunfix(cntxt->error_row->batCacheid);
@@ -1605,6 +1601,10 @@ create_rejects_table(Client cntxt)
                        if (cntxt->error_input)
                                BBPunfix(cntxt->error_input->batCacheid);
                } else {
+                       BATseqbase(cntxt->error_row, 0);
+                       BATseqbase(cntxt->error_fld, 0);
+                       BATseqbase(cntxt->error_msg, 0);
+                       BATseqbase(cntxt->error_input, 0);
                        BBPkeepref(cntxt->error_row->batCacheid);
                        BBPkeepref(cntxt->error_fld->batCacheid);
                        BBPkeepref(cntxt->error_msg->batCacheid);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to