fix potential mem leak on connection lost

The PostgreSQL driver can change it's connection status
after the first established connection.
In this case, the function "isOpen()" returns false
and the "close()" function would not free all resources.
With this fix, the "close()" function
always frees any allocated resource
independent of the connection status.

Fixes: QTBUG-88984
Change-Id: I7c9add6a183bf46a8573952ab39f8cb1f728c00c
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
(cherry picked from commit 6e9125608f2c07c6c5f41a7a42ea097d1333e1e3)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Matthias Möller 2020-12-09 21:39:20 +01:00 committed by Qt Cherry-pick Bot
parent 96c1380900
commit dbfd3d2892

View File

@ -1197,7 +1197,6 @@ bool QPSQLDriver::open(const QString &db,
const QString &connOpts)
{
Q_D(QPSQLDriver);
if (isOpen())
close();
QString connectString;
if (!host.isEmpty())
@ -1241,7 +1240,6 @@ bool QPSQLDriver::open(const QString &db,
void QPSQLDriver::close()
{
Q_D(QPSQLDriver);
if (isOpen()) {
d->seid.clear();
if (d->sn) {
@ -1255,7 +1253,6 @@ void QPSQLDriver::close()
d->connection = nullptr;
setOpen(false);
setOpenError(false);
}
}
QSqlResult *QPSQLDriver::createResult() const