Changeset: 681ea997d2cd for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=681ea997d2cd Modified Files: sql/backends/monet5/sql_execute.c sql/backends/monet5/sql_statistics.c Branch: default Log Message:
Defense line against malloc failure diffs (54 lines): diff --git a/sql/backends/monet5/sql_execute.c b/sql/backends/monet5/sql_execute.c --- a/sql/backends/monet5/sql_execute.c +++ b/sql/backends/monet5/sql_execute.c @@ -385,7 +385,7 @@ SQLstatementIntern(Client c, str *expr, ac = m->session->auto_commit; o = MNEW(mvc); if (!o) - throw(SQL, "SQLstatement", "Out of memory"); + throw(SQL, "SQLstatement", MAL_MALLOC_FAIL); *o = *m; /* hide query cache, this causes crashes in SQLtrans() due to uninitialized memory otherwise */ m->qc = NULL; @@ -545,15 +545,20 @@ SQLstatementIntern(Client c, str *expr, const char *name, *rname; sql_exp *e = n->data; sql_subtype *t = exp_subtype(e); + void *ptr =ATOMnil(t->type->localtype); + + if( ptr == NULL){ + msg = createException(SQL,"SQLstatement",MAL_MALLOC_FAIL); + goto endofcompile; + } name = e->name; if (!name && e->type == e_column && e->r) name = e->r; rname = e->rname; if (!rname && e->type == e_column && e->l) rname = e->l; - // FIXME unchecked_malloc ATOMnil can return NULL res_col_create(m->session->tr, res, rname, name, t->type->sqlname, t->digits, - t->scale, t->type->localtype, ATOMnil(t->type->localtype)); + t->scale, t->type->localtype, ptr); } *result = res; } diff --git a/sql/backends/monet5/sql_statistics.c b/sql/backends/monet5/sql_statistics.c --- a/sql/backends/monet5/sql_statistics.c +++ b/sql/backends/monet5/sql_statistics.c @@ -179,7 +179,6 @@ sql_analyze(Client cntxt, MalBlkPtr mb, if (maxlen < 4) { GDKfree(maxval); - // FIXME unchecked_malloc GDKmalloc can return NULL maxval = GDKmalloc(4); if( maxval== NULL) GDKfree(dquery); @@ -188,7 +187,6 @@ sql_analyze(Client cntxt, MalBlkPtr mb, } if (minlen < 4) { GDKfree(minval); - // FIXME unchecked_malloc GDKmalloc can return NULL minval = GDKmalloc(4); if( minval== NULL){ GDKfree(dquery); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list