diff --git a/src/bin/pg_basebackup/pg_createsubscriber.c b/src/bin/pg_basebackup/pg_createsubscriber.c index a6e0986670..40a939f071 100644 --- a/src/bin/pg_basebackup/pg_createsubscriber.c +++ b/src/bin/pg_basebackup/pg_createsubscriber.c @@ -251,8 +251,8 @@ usage(void) static char * get_base_conninfo(const char *conninfo, char **dbname) { - PQExpBuffer buf = createPQExpBuffer(); - PQconninfoOption *conn_opts = NULL; + PQExpBuffer buf; + PQconninfoOption *conn_opts; PQconninfoOption *conn_opt; char *errmsg = NULL; char *ret; @@ -265,6 +265,7 @@ get_base_conninfo(const char *conninfo, char **dbname) return NULL; } + buf = createPQExpBuffer(); i = 0; for (conn_opt = conn_opts; conn_opt->keyword != NULL; conn_opt++) { @@ -497,6 +498,7 @@ connect_database(const char *conninfo, bool exit_on_error) { pg_log_error("connection to database failed: %s", PQerrorMessage(conn)); + PQfinish(conn); if (exit_on_error) exit(1); @@ -1209,6 +1211,7 @@ create_logical_replication_slot(PGconn *conn, struct LogicalRepInfo *dbinfo) pg_log_error("could not create replication slot \"%s\" on database \"%s\": %s", slot_name, dbinfo->dbname, PQresultErrorMessage(res)); + destroyPQExpBuffer(str); return NULL; }