diff --git a/src/interfaces/ecpg/lib/connect.c b/src/interfaces/ecpg/lib/connect.c index 5dc05ea7402b84ddd5cf8e2a9028936787287a34..2618cc37ed8f865190af0c8f4838be9d0ab1d5b3 100644 --- a/src/interfaces/ecpg/lib/connect.c +++ b/src/interfaces/ecpg/lib/connect.c @@ -411,17 +411,6 @@ ECPGconnect(int lineno, const char *name, const char *user, const char *passwd, this->connection = PQsetdbLogin(host, port, options, NULL, realname, user, passwd); - if (host) - free(host); - if (port) - free(port); - if (options) - free(options); - if (realname) - free(realname); - if (dbname) - free(dbname); - if (PQstatus(this->connection) == CONNECTION_BAD) { ecpg_finish(this); @@ -433,9 +422,30 @@ ECPGconnect(int lineno, const char *name, const char *user, const char *passwd, user ? "for user " : "", user ? user : "", lineno); ECPGraise(lineno, ECPG_CONNECT, realname ? realname : "<DEFAULT>"); + if (host) + free(host); + if (port) + free(port); + if (options) + free(options); + if (realname) + free(realname); + if (dbname) + free(dbname); return false; } + if (host) + free(host); + if (port) + free(port); + if (options) + free(options); + if (realname) + free(realname); + if (dbname) + free(dbname); + this->committed = true; this->autocommit = autocommit;