Changeset: 4ec505c1f7c0 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4ec505c1f7c0 Modified Files: monetdb5/mal/mal_instruction.c monetdb5/mal/mal_parser.c monetdb5/mal/mal_stack.c Branch: malupgrade Log Message:
Calculate proper stack size diffs (83 lines): diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c --- a/monetdb5/mal/mal_instruction.c +++ b/monetdb5/mal/mal_instruction.c @@ -158,7 +158,7 @@ resizeMalBlk(MalBlkPtr mb, int elements) mb->ssize = elements; } else { mb->errors++; - showException(GDKout, MAL, "resizeMalBlk", "out of memory (requested: %ld bytes)", elements * sizeof(InstrPtr)); + showException(GDKout, MAL, "resizeMalBlk", "out of memory (requested: "LLFMT" bytes)", (lng) elements * sizeof(InstrPtr)); } } @@ -170,7 +170,7 @@ resizeMalBlk(MalBlkPtr mb, int elements) mb->vsize = elements; } else{ mb->errors++; - showException(GDKout, MAL, "resizeMalBlk", "out of memory (requested: %ld bytes)", elements * sizeof (VarRecord)); + showException(GDKout, MAL, "resizeMalBlk", "out of memory (requested: "LLFMT" bytes)", (lng) elements * sizeof(InstrPtr)); } } } diff --git a/monetdb5/mal/mal_parser.c b/monetdb5/mal/mal_parser.c --- a/monetdb5/mal/mal_parser.c +++ b/monetdb5/mal/mal_parser.c @@ -859,6 +859,7 @@ term(Client cntxt, MalBlkPtr curBlk, Ins setPolymorphic(*curInstr, cst.vtype, FALSE); free = 0; } + /* protect against leaks coming from constant reuse */ if (free && ATOMextern(cst.vtype) && cst.val.pval) VALclear(&cst); *curInstr = pushArgument(curBlk, *curInstr, cstidx); @@ -869,8 +870,6 @@ term(Client cntxt, MalBlkPtr curBlk, Ins tpe = typeElm(cntxt, cst.vtype); if (tpe < 0) return 3; - //if( cst.vtype == TYPE_str) - //mnstr_printf(cntxt->fdout,"#tpe %d cstvtype %d %s\n", tpe,cst.vtype, (char*)cst.val.pval); cstidx = defConstant(curBlk, tpe, &cst); setPolymorphic(*curInstr, tpe, FALSE); if (flag) diff --git a/monetdb5/mal/mal_stack.c b/monetdb5/mal/mal_stack.c --- a/monetdb5/mal/mal_stack.c +++ b/monetdb5/mal/mal_stack.c @@ -55,30 +55,30 @@ /* #define DEBUG_MAL_STACK*/ MalStkPtr -newGlobalStack(int size) +newGlobalStack(int elements) { MalStkPtr s; - s = (MalStkPtr) GDKzalloc(stackSize(size) + offsetof(MalStack, stk)); + s = (MalStkPtr) GDKzalloc(stackSize(elements) ); if (s == NULL) showException(GDKout,MAL,"newGlobalStack",MAL_MALLOC_FAIL); else - s->stksize = size; + s->stksize = elements; return s; } MalStkPtr -reallocGlobalStack(MalStkPtr old, int cnt) +reallocGlobalStack(MalStkPtr old, int elements) { MalStkPtr s; - if (old->stksize > cnt) + if (old->stksize > elements) return old; - s = (MalStkPtr) GDKrealloc(old, stackSize( cnt)); + s = (MalStkPtr) GDKrealloc(old, stackSize( elements)); if( s) { - memset(((char *)s) + stackSize(old->stksize), 0, stackSize(cnt) - stackSize(old->stksize) ); - s->stksize = cnt; + memset(((char *)s) + stackSize(old->stksize), 0, stackSize(elements) - stackSize(old->stksize) ); + s->stksize = elements; } else showException(GDKout,MAL,"reallocGlobalStack",MAL_MALLOC_FAIL); return s; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list