Changeset: a1d41172ba94 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a1d41172ba94
Modified Files:
        gdk/gdk_value.c
        monetdb5/modules/mal/calc.c
        sql/backends/monet5/mal_backend.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/vaults/fits/fits.c
        sql/backends/monet5/vaults/netcdf/netcdf.c
Branch: Jul2017
Log Message:

Resolved some FIXME comments.


diffs (158 lines):

diff --git a/gdk/gdk_value.c b/gdk/gdk_value.c
--- a/gdk/gdk_value.c
+++ b/gdk/gdk_value.c
@@ -142,9 +142,10 @@ VALcopy(ValPtr d, const ValRecord *s)
 {
        if (!ATOMextern(s->vtype)) {
                *d = *s;
-       } else if (s->val.pval == 0) {
-               // FIXME unchecked_malloc ATOMnil can return NULL
+       } else if (s->val.pval == NULL) {
                d->val.pval = ATOMnil(s->vtype);
+               if (d->val.pval == NULL)
+                       return NULL;
                d->vtype = s->vtype;
        } else if (s->vtype == TYPE_str) {
                d->vtype = TYPE_str;
diff --git a/monetdb5/modules/mal/calc.c b/monetdb5/modules/mal/calc.c
--- a/monetdb5/modules/mal/calc.c
+++ b/monetdb5/modules/mal/calc.c
@@ -632,8 +632,9 @@ CALCswitchbit(Client cntxt, MalBlkPtr mb
                p = getArgReference(stk, pci, 3);
        }
        if (ATOMextern(t1)) {
-               // FIXME unchecked_malloc ATOMdup could return NULL
                *(ptr **) retval = ATOMdup(t1, *(ptr**)p);
+               if (*(ptr **) retval == NULL)
+                       throw(MAL, "ifthenelse", MAL_MALLOC_FAIL);
        } else if (t1 == TYPE_void) {
                memcpy(retval, p, sizeof(oid));
        } else {
diff --git a/sql/backends/monet5/mal_backend.c 
b/sql/backends/monet5/mal_backend.c
--- a/sql/backends/monet5/mal_backend.c
+++ b/sql/backends/monet5/mal_backend.c
@@ -27,7 +27,6 @@ backend_reset(backend *b)
 backend *
 backend_create(mvc *m, Client c)
 {
-       // FIXME unchecked_malloc MNEW can return NULL
        backend *b = MNEW(backend);
 
        if( b== NULL)
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -1039,7 +1039,6 @@ rel_parse_value(backend *be, char *query
 
        m->caching = 0;
        m->emode = emode;
-       // FIXME unchecked_malloc GDKmalloc can return NULL
        b = (buffer*)GDKmalloc(sizeof(buffer));
        if (b == 0)
                return sql_error(m, 02, MAL_MALLOC_FAIL);
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -442,11 +442,10 @@ SQLinitClient(Client c)
         * based on the mandatory scripts to be executed.
         */
        if (sqlinit) {          /* add sqlinit to the fdin stack */
-               // FIXME unchecked_malloc GDKmalloc can return NULL
                buffer *b = (buffer *) GDKmalloc(sizeof(buffer));
                size_t len = strlen(sqlinit);
                bstream *fdin;
-       
+
                if( b == NULL)
                        throw(SQL,"sql.initClient",MAL_MALLOC_FAIL);
 
diff --git a/sql/backends/monet5/vaults/fits/fits.c 
b/sql/backends/monet5/vaults/fits/fits.c
--- a/sql/backends/monet5/vaults/fits/fits.c
+++ b/sql/backends/monet5/vaults/fits/fits.c
@@ -205,17 +205,19 @@ str FITSexportTable(Client cntxt, MalBlk
  
        tbl = mvc_bind_table(m, sch, tname);
        if (tbl == NULL) {
-               msg = createException (MAL, "fits.exporttable", "Table %s is 
missing.\n", tname);
-               return msg;
+               throw(MAL, "fits.exporttable", "Table %s is missing.\n", tname);
        }
 
        set = (*tbl).columns.set;
 
        columns = list_length(set);
-       // FIXME unchecked_malloc GDKmalloc can return NULL
        colname = (str *) GDKmalloc(columns * sizeof(str));
-       // FIXME unchecked_malloc GDKmalloc can return NULL
        tform = (str *) GDKmalloc(columns * sizeof(str));
+       if (colname == NULL || tform == NULL) {
+               GDKfree(colname);
+               GDKfree(tform);
+               throw(MAL, "fits.exporttable", MAL_MALLOC_FAIL);
+       }
 
        /*      fprintf(stderr,"Number of columns: %d\n", columns);*/
 
diff --git a/sql/backends/monet5/vaults/netcdf/netcdf.c 
b/sql/backends/monet5/vaults/netcdf/netcdf.c
--- a/sql/backends/monet5/vaults/netcdf/netcdf.c
+++ b/sql/backends/monet5/vaults/netcdf/netcdf.c
@@ -612,9 +612,14 @@ NCDFloadVar(bat **dim, bat *v, int ncid,
        res = NULL;
 
        /* Manually create dimensions with range [0:1:dlen[i]] */
-       // FIXME unchecked_malloc GDKmalloc can return NULL
        val_rep = (size_t *)GDKmalloc(sizeof(size_t) * vndims);
        grp_rep = (size_t *)GDKmalloc(sizeof(size_t) * vndims);
+       if (val_rep == NULL || grp_rep == NULL) {
+               GDKfree(dlen);
+               GDKfree(val_rep);
+               GDKfree(grp_rep);
+               throw(MAL, "netcdf.loadvar", MAL_MALLOC_FAIL);
+       }
 
        /* compute the repetition factor inside of the series (val_rep) and of 
series (grp_rep) */
        for (i = 0; i < vndims; i++) {
@@ -716,6 +721,8 @@ NCDFimportVariable(Client cntxt, MalBlkP
 
        /* compose 'create table' statement in the buffer */
        dname = (char **) GDKzalloc( sizeof(char *) * vndims);
+       if (dname == NULL)
+               throw(MAL, "netcdf.importvar", MAL_MALLOC_FAIL);
        for (i = 0; i < vndims; i++)
                dname[i] = (char *) GDKzalloc(NC_MAX_NAME + 1);
 
@@ -724,10 +731,12 @@ NCDFimportVariable(Client cntxt, MalBlkP
        j = snprintf(buf, BUFSIZ,"create table %s.%s( ", sch->base.name, aname);
 
        for (i = 0; i < vndims; i++){
-               if ((retval = nc_inq_dim(ncid, vdims[i], dname[i], &dlen)))
-                       return createException(MAL, "netcdf.importvar",
-                                                                  "Cannot read 
dimension %d : %s",
-                                                                  vdims[i], 
nc_strerror(retval));
+               if ((retval = nc_inq_dim(ncid, vdims[i], dname[i], &dlen))) {
+                       GDKfree(dname);
+                       throw(MAL, "netcdf.importvar",
+                             "Cannot read dimension %d : %s",
+                             vdims[i], nc_strerror(retval));
+               }
 
                if ( dlen <= (int) GDK_bte_max )
                        dimtype = "TINYINT";
@@ -748,12 +757,15 @@ NCDFimportVariable(Client cntxt, MalBlkP
                return msg;
 
 /* load variable data */
-       // FIXME unchecked_malloc GDKmalloc can return NULL
        dim_bids = (bat *)GDKmalloc(sizeof(bat) * vndims);
+       if (dim_bids == NULL)
+               throw(MAL, "netcdf.importvar", MAL_MALLOC_FAIL);
 
        msg = NCDFloadVar(&dim_bids, &vbatid, ncid, varid, vtype, vndims, 
vdims);
-       if ( msg != MAL_SUCCEED )
+       if ( msg != MAL_SUCCEED ) {
+               GDKfree(dim_bids);
                return msg;
+       }
 
        /* associate columns in the table with loaded variable data */
        aname_sys = toLower(aname);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to