From f6d70650933c5c1e9b238d8aaa06419223908183 Mon Sep 17 00:00:00 2001 From: Christian Ehrlicher Date: Sun, 12 Feb 2023 17:46:01 +0100 Subject: [PATCH] SQL/SQLDatabase: do not copy q within QSqlDatabasePrivate::copy() Copying the QSqlDatabase pointer inside QSqlDatabasePrivate::copy() is not a good idea since it must point to the owning instance and not another one. Since it's not used anywhere we can safely remove it. Change-Id: Ie45b594305059afd9b8d8b25d4864dd77769acf7 Reviewed-by: Thiago Macieira Reviewed-by: Volker Hilsheimer --- src/sql/kernel/qsqldatabase.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp index ac6e945ca38..5a8d27a5d06 100644 --- a/src/sql/kernel/qsqldatabase.cpp +++ b/src/sql/kernel/qsqldatabase.cpp @@ -46,9 +46,8 @@ Q_GLOBAL_STATIC(QConnectionDict, dbDict) class QSqlDatabasePrivate { public: - QSqlDatabasePrivate(QSqlDatabase *d, QSqlDriver *dr = nullptr): + QSqlDatabasePrivate(QSqlDriver *dr): ref(1), - q(d), driver(dr), port(-1) { @@ -61,7 +60,6 @@ public: void disable(); QAtomicInt ref; - QSqlDatabase *q; QSqlDriver* driver; QString dbname; QString uname; @@ -84,7 +82,6 @@ public: QSqlDatabasePrivate::QSqlDatabasePrivate(const QSqlDatabasePrivate &other) : ref(1) { - q = other.q; dbname = other.dbname; uname = other.uname; pword = other.pword; @@ -140,7 +137,7 @@ DriverDict &QSqlDatabasePrivate::driverDict() QSqlDatabasePrivate *QSqlDatabasePrivate::shared_null() { static QSqlNullDriver dr; - static QSqlDatabasePrivate n(nullptr, &dr); + static QSqlDatabasePrivate n(&dr); return &n; } @@ -212,7 +209,6 @@ QSqlDatabase QSqlDatabasePrivate::database(const QString& name, bool open) */ void QSqlDatabasePrivate::copy(const QSqlDatabasePrivate *other) { - q = other->q; dbname = other->dbname; uname = other->uname; pword = other->pword; @@ -587,8 +583,8 @@ QStringList QSqlDatabase::connectionNames() */ QSqlDatabase::QSqlDatabase(const QString &type) + : d(new QSqlDatabasePrivate(nullptr)) { - d = new QSqlDatabasePrivate(this); d->init(type); } @@ -599,8 +595,8 @@ QSqlDatabase::QSqlDatabase(const QString &type) */ QSqlDatabase::QSqlDatabase(QSqlDriver *driver) + : d(new QSqlDatabasePrivate(driver)) { - d = new QSqlDatabasePrivate(this, driver); } /*! @@ -609,8 +605,8 @@ QSqlDatabase::QSqlDatabase(QSqlDriver *driver) objects. */ QSqlDatabase::QSqlDatabase() + : d(QSqlDatabasePrivate::shared_null()) { - d = QSqlDatabasePrivate::shared_null(); d->ref.ref(); }