Changeset: cb7f1aecda1a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cb7f1aecda1a
Modified Files:
        monetdb5/optimizer/opt_mergetable.mx
Branch: Aug2011
Log Message:

opt_mergetable: don't use alloca


diffs (38 lines):

diff --git a/monetdb5/optimizer/opt_mergetable.mx 
b/monetdb5/optimizer/opt_mergetable.mx
--- a/monetdb5/optimizer/opt_mergetable.mx
+++ b/monetdb5/optimizer/opt_mergetable.mx
@@ -1187,7 +1187,7 @@
        mat_t *mirror = mat+mirror_mid;
        int cur_topn = 0, k, i;
        int cnt = topn_chain_list_length(mb, getArg(mirror->mi,1));
-       int *stmt = (int*) alloca( cnt * sizeof(int) * mirror->mi->argc );
+       int *stmt = (int*) GDKmalloc( cnt * sizeof(int) * mirror->mi->argc );
 
        for(k=1; k < mirror->mi->argc; k++) 
                topn_stmt(stmt+k*cnt, mb, getArg(mirror->mi, k));
@@ -1255,6 +1255,8 @@
        /* all topn's done, mirror keep in mm */
        mirror->mm = bat_mirror(mb, cur_topn);
 
+       GDKfree(stmt);
+
        /* now project */
        return mat_pack_topn_project(mb, p, mat, mtop, mirror_mid);
 }
@@ -1353,7 +1355,7 @@
        mat_t *mirror = mat+mirror_mid;
        int k, i;
        int cnt = sort_chain_list_length(mb, getArg(mirror->mi,1), has_mirror);
-       int *stmt = (int*) alloca( cnt * sizeof(int) * mirror->mi->argc );
+       int *stmt = (int*) GDKmalloc( cnt * sizeof(int) * mirror->mi->argc );
        InstrPtr cur_sort = NULL;
 
        for(k=1; k < mirror->mi->argc; k++) 
@@ -1407,6 +1409,7 @@
                pushInstruction(mb, pck);
                cur_sort = pck;
        }
+       GDKfree(stmt);
        if (has_mirror) {
                /* all sort's done, keep 'which bat order' in mm */
                mirror->mm = cur_sort;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to