Changeset: 1b7960ab78a5 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/1b7960ab78a5 Modified Files: monetdb5/optimizer/opt_mergetable.c Branch: Jun2023 Log Message:
Do some error checking. diffs (44 lines): diff --git a/monetdb5/optimizer/opt_mergetable.c b/monetdb5/optimizer/opt_mergetable.c --- a/monetdb5/optimizer/opt_mergetable.c +++ b/monetdb5/optimizer/opt_mergetable.c @@ -401,7 +401,10 @@ mat_assign(MalBlkPtr mb, InstrPtr p, mat for(int k=1; k < mat[m].mi->argc; k++) { /* reuse inputs of old mat */ r = pushArgument(mb, r, getArg(mat[m].mi, k)); - (void)setPartnr(ml, -1, getArg(mat[m].mi, k), k); + if (setPartnr(ml, -1, getArg(mat[m].mi, k), k)) { + freeInstruction(r); + return NULL; + } } if (mat_add(ml, r, mat_none, getFunctionId(p))) { freeInstruction(r); @@ -873,7 +876,7 @@ join_split(Client cntxt, InstrPtr p, int len = strlen( getFunctionId(p) ); name = GDKmalloc(len+3); if (!name) - return -1; + return -2; strncpy(name, getFunctionId(p), len-7); strcpy(name+len-7, "join"); @@ -929,6 +932,10 @@ mat_joinNxM(Client cntxt, MalBlkPtr mb, int split = join_split(cntxt, p, args); int nr_mv1 = split; + if (split == -2) { + GDKfree(mats); + return -1; + } l = newInstructionArgs(mb, matRef, packRef, mat[mv1].mi->argc * mat[mv2].mi->argc); r = newInstructionArgs(mb, matRef, packRef, mat[mv1].mi->argc * mat[mv2].mi->argc); if (l == NULL || r == NULL) { @@ -2575,6 +2582,8 @@ OPTmergetableImplementation(Client cntxt for (k = p->retc; msg == MAL_SUCCEED && k<p->argc; k++) { if((m=is_a_mat(getArg(p,k), &ml)) >= 0){ msg = mat_pack(mb, &ml, m); + if (msg) + break; } } if (msg) _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org