Changeset: c7d0f81ede21 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c7d0f81ede21 Modified Files: sql/src/backends/monet5/sql_optimizer.mx Branch: default Log Message:
Merge with Oct2010 branch. diffs (48 lines): diff -r 640b5b25fda9 -r c7d0f81ede21 sql/src/backends/monet5/sql_optimizer.mx --- a/sql/src/backends/monet5/sql_optimizer.mx Wed Oct 13 14:31:44 2010 +0200 +++ b/sql/src/backends/monet5/sql_optimizer.mx Wed Oct 13 14:33:39 2010 +0200 @@ -565,7 +565,7 @@ setOptimizers(str optimizer) { int top=0; - char *base, *nxt, *nme, *pipe="notdefined"; + char *base=0, *nxt, *nme, *pipe="notdefined"; /* do nothing if the pipe line is already set */ if ( optimizerpipe && optimizer && strcmp(optimizerpipe,optimizer) == 0 ) @@ -581,7 +581,8 @@ if(strcmp(optimizer,"off")==0){ if( previouspipe ) return optimizerpipe; - previouspipe = optimizerpipe; + previouspipe = optimizerpipe; /* give reference away */ + optimizerpipe = NULL; pipe = GDKgetenv(minimalPipe); if ( pipe ) optimizer = pipe; @@ -590,6 +591,7 @@ if (previouspipe == NULL) return optimizerpipe; optimizer= previouspipe; + base = previouspipe; /* free this later */ previouspipe = 0; } else { /* the optimizer may be an environment alias */ @@ -598,7 +600,16 @@ optimizer = pipe; } - optimizerpipe= optimizer; + /* always strdup the value assigned to optimizerpipe, so we + need to also free the old value, making sure we don't first + free the value that maybe we want to strdup (in case + optimizer==optimizerpipe) */ + optimizer = GDKstrdup(optimizer); + if (base) /* free old value of previouspipe */ + GDKstrdup(base); + if (optimizerpipe) + GDKfree(optimizerpipe); + optimizerpipe = optimizer; base = optimizer = GDKstrdup(optimizer); /* An optimizer pipe is a comma separated list of names */ _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list