Changeset: 8dc454f36317 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8dc454f36317
Modified Files:
        monetdb5/optimizer/opt_evaluate.mx
Branch: Dec2011
Log Message:

fix leak in evaluate optimizer


diffs (29 lines):

diff --git a/monetdb5/optimizer/opt_evaluate.mx 
b/monetdb5/optimizer/opt_evaluate.mx
--- a/monetdb5/optimizer/opt_evaluate.mx
+++ b/monetdb5/optimizer/opt_evaluate.mx
@@ -205,19 +205,18 @@ OPTevaluateImplementation(Client cntxt, 
                                mnstr_printf(cntxt->fdout, "#result:%s\n", msg 
== MAL_SUCCEED ? "ok" : msg);
                        }
                        if (msg == MAL_SUCCEED) {
+                               int nvar;
                                ValRecord cst;
 
                                cst.vtype = 0;
                                VALcopy(&cst, &env->stk[getArg(p, 0)]);
                                /* You may not overwrite constants.  They may 
be used by
                                 * other instructions */
-                               getArg(p, 1) = defConstant(mb, getArgType(mb, 
p, 0), &cst);
-                               /* update the stack frame for next evaluations 
*/
-                               if (getArgType(mb, p, 1) == TYPE_str)
-                                       setVarCleanup(mb, getArg(p, 1));
-                               else
-                                       clrVarCleanup(mb, getArg(p, 1));
-                               VALcopy(&env->stk[getArg(p, 1)], 
&getVarConstant(mb, getArg(p, 1)));
+                               nvar = getArg(p, 1) = defConstant(mb, 
getArgType(mb, p, 0), &cst);
+                               if (nvar > env->stktop) {
+                                       VALcopy(&env->stk[getArg(p, 1)], 
&getVarConstant(mb, getArg(p, 1)));
+                                       env->stktop = getArg(p, 1);
+                               }
                                alias[getArg(p, 0)] = getArg(p, 1);
                                p->argc = 2;
                                p->token = ASSIGNsymbol;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to