From 449e5755956b5dc8fd36232649893ba252b47535 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Fri, 23 May 1997 01:53:42 +0000 Subject: [PATCH] Only free memory if environment value is replaced. --- src/bin/psql/psql.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/bin/psql/psql.c b/src/bin/psql/psql.c index 486e07f331..7fa71a3b98 100644 --- a/src/bin/psql/psql.c +++ b/src/bin/psql/psql.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.63 1997/05/23 00:20:20 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.64 1997/05/23 01:53:42 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -837,6 +837,7 @@ do_connect(const char *new_dbname, else { PGconn *olddb = settings->db; static char *userenv = NULL; + char *old_userenv = NULL; printf("closing connection to database: %s\n", dbname); if (new_user != NULL) { @@ -845,10 +846,14 @@ do_connect(const char *new_dbname, so we have to do it via PGUSER */ if (userenv != NULL) - free(userenv); + old_userenv = userenv; userenv = malloc(strlen("PGUSER=") + strlen(new_user) + 1); sprintf(userenv,"PGUSER=%s",new_user); - putenv(userenv); /*Solaris putenv() continues to use memory in env*/ + /* putenv() may continue to use memory as part of environment */ + putenv(userenv); + /* can delete old memory if we malloc'ed it */ + if (old_userenv != NULL) + free(old_userenv); } settings->db = PQsetdb(PQhost(olddb), PQport(olddb), NULL, NULL, new_dbname); -- 2.40.0