Bruce Momjian wrote: > Tom Lane wrote: > > Bruce Momjian <br...@momjian.us> writes: > > > Tom Lane wrote: > > >> I certainly hope that pg_regress isn't freeing the strings it passes > > >> to putenv() ... > > > > > pg_regress does not restore these settings (it says with C/English) so > > > the code is different. > > > > That's not what I'm on about. You're trashing strings that are part of > > the live environment. It might accidentally fail to fail for you, if > > your version of free() doesn't immediately clobber the released storage, > > but it's still broken. Read the putenv() man page. > > > > + #ifndef WIN32 > > + char *envstr = (char *) pg_malloc(ctx, strlen(var) + > > + strlen(val) + 1); > > + > > + sprintf(envstr, "%s=%s", var, val); > > + putenv(envstr); > > + pg_free(envstr); > > ^^^^^^^^^^^^^^^^ > > + #else > > + SetEnvironmentVariableA(var, val); > > + #endif > > > > The fact that there is no such free() in pg_regress is not an oversight > > or shortcut. > > Interesting. I did not know this and it was not clear from my manual > page or FreeBSD's manual page, but Linux clearly does this. > > Updated patch attached.
Applied to HEAD and 9.0.X. Thanks for the ideas/review. -- Bruce Momjian <br...@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. + -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers