aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>1997-05-22 23:57:27 +0000
committerBruce Momjian <bruce@momjian.us>1997-05-22 23:57:27 +0000
commit148f7203fa8d0511834f96f6939a913f1e38aaed (patch)
treed83a0543f617ff00d4ed162dafbef21cfbcf5c63 /src
parent65ff0feacf98c4b7096a3c5df4dd6efd4ffe5fa2 (diff)
downloadpostgresql-148f7203fa8d0511834f96f6939a913f1e38aaed.tar.gz
postgresql-148f7203fa8d0511834f96f6939a913f1e38aaed.zip
Preserve putenv() memory in psql \connect user fix.
Diffstat (limited to 'src')
-rw-r--r--src/bin/psql/psql.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/bin/psql/psql.c b/src/bin/psql/psql.c
index 6f62b57ccea..1597c5561b4 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.61 1997/05/22 18:55:35 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.62 1997/05/22 23:57:27 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -836,7 +836,7 @@ do_connect(const char *new_dbname,
fprintf(stderr, "\\connect must be followed by a database name\n");
else {
PGconn *olddb = settings->db;
- char *userenv;
+ static char *userenv = NULL;
printf("closing connection to database: %s\n", dbname);
if (new_user != NULL) {
@@ -844,10 +844,11 @@ do_connect(const char *new_dbname,
PQsetdb() does not allow us to specify the user,
so we have to do it via PGUSER
*/
+ if (userenv != NULL)
+ free(userenv);
userenv = malloc(strlen("PGUSER=") + strlen(new_user) + 1);
sprintf(userenv,"PGUSER=%s",new_user);
- putenv(userenv);
- free(userenv);
+ putenv(userenv); /* putenv() continues to use memory in env. */
}
settings->db = PQsetdb(PQhost(olddb), PQport(olddb),
NULL, NULL, new_dbname);