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
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list