Changeset: 1d08156a9d85 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1d08156a9d85 Modified Files: monetdb5/optimizer/opt_multiplex.c monetdb5/optimizer/opt_remap.c monetdb5/optimizer/opt_remoteQueries.c monetdb5/optimizer/opt_support.c Branch: Jul2017 Log Message:
Fix possible memory leaks diffs (99 lines): diff --git a/monetdb5/optimizer/opt_multiplex.c b/monetdb5/optimizer/opt_multiplex.c --- a/monetdb5/optimizer/opt_multiplex.c +++ b/monetdb5/optimizer/opt_multiplex.c @@ -191,6 +191,8 @@ OPTmultiplexSimple(Client cntxt, MalBlkP //MalBlkPtr mb= cntxt->curprg->def; int i, doit=0; InstrPtr p; + str msg = MAL_SUCCEED; + if(mb) for( i=0; i<mb->stop; i++){ p= getInstrPtr(mb,i); @@ -200,16 +202,16 @@ OPTmultiplexSimple(Client cntxt, MalBlkP } } if( doit) { - str msg = OPTmultiplexImplementation(cntxt, mb, 0, 0); - freeException(msg); /* if (msg) return some error as well? */ + msg = OPTmultiplexImplementation(cntxt, mb, 0, 0); chkTypes(cntxt->fdout, cntxt->nspace, mb,TRUE); if ( mb->errors == 0) { chkFlow(cntxt->fdout, mb); chkDeclarations(cntxt->fdout,mb); } } - return 0; + return msg; } + str OPTmultiplexImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) { diff --git a/monetdb5/optimizer/opt_remap.c b/monetdb5/optimizer/opt_remap.c --- a/monetdb5/optimizer/opt_remap.c +++ b/monetdb5/optimizer/opt_remap.c @@ -108,6 +108,7 @@ OPTmultiplexInline(Client cntxt, MalBlkP int refbat=0, retc = p->retc; bit *upgrade; Symbol s; + str msg; s= findSymbol(cntxt->nspace, @@ -273,7 +274,9 @@ terminateMX: GDKfree(upgrade); /* ugh ugh, fallback to non inline, but optimized code */ - OPTmultiplexSimple(cntxt, s->def); + msg = OPTmultiplexSimple(cntxt, s->def); + if(msg) + freeException(msg); s->def->inlineProp = 0; return 0; } diff --git a/monetdb5/optimizer/opt_remoteQueries.c b/monetdb5/optimizer/opt_remoteQueries.c --- a/monetdb5/optimizer/opt_remoteQueries.c +++ b/monetdb5/optimizer/opt_remoteQueries.c @@ -314,7 +314,7 @@ OPTremoteQueriesImplementation(Client cn q= pushArgument(mb,q,location[getArg(p,j)]); snprintf(buf,BUFSIZ,"io.print(%s);", getVarName(mb,getArg(p,j)) ); - (void) pushStr(mb,q,buf); + q= pushStr(mb,q,buf); pushInstruction(mb,q); } pushInstruction(mb,p); diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c --- a/monetdb5/optimizer/opt_support.c +++ b/monetdb5/optimizer/opt_support.c @@ -123,13 +123,15 @@ optimizeMALBlock(Client cntxt, MalBlkPtr msg = (str) (*p->fcn) (cntxt, mb, 0, p); if (msg) { str place = getExceptionPlace(msg); - str nmsg = createException(getExceptionType(msg), place, "%s", getExceptionMessage(msg)); - if (nmsg && place) { + str nmsg = NULL; + if(place){ + nmsg = createException(getExceptionType(msg), place, "%s", getExceptionMessage(msg)); + GDKfree(place); + } + if (nmsg ) { freeException(msg); msg = nmsg; - GDKfree(place); - } else - freeException(nmsg); + } goto wrapup; } if (cntxt->mode == FINISHCLIENT) @@ -170,7 +172,7 @@ MALoptimizer(Client c) return MAL_SUCCEED; msg= optimizeMALBlock(c, c->curprg->def); if( msg == MAL_SUCCEED) - OPTmultiplexSimple(c, c->curprg->def); + msg = OPTmultiplexSimple(c, c->curprg->def); return msg; } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list