From 4c2cae795117897847c0ba0e9b9ff20fa6e4eda9 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Thu, 9 Nov 2017 00:12:19 +0100 Subject: Call removeDatabase() when there is no QSqlDatabase object in scope MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If there is a QSqlDatabase or QSqlQuery object around still that is active then when removing the database it will output a warning. Since the database was not opened here we just need to ensure the object is deleted first before we remove it. Task-number: QTBUG-59664 Change-Id: I95d658e178e3e5b95231e4d9525bf5994f5969c5 Reviewed-by: René J.V. Bertin Reviewed-by: Konstantin Tokarev --- src/assistant/help/qhelpdbreader.cpp | 18 +++++++++++++----- src/assistant/help/qhelpdbreader_p.h | 1 + 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/assistant/help/qhelpdbreader.cpp b/src/assistant/help/qhelpdbreader.cpp index 3b364dfb1..6574ac90e 100644 --- a/src/assistant/help/qhelpdbreader.cpp +++ b/src/assistant/help/qhelpdbreader.cpp @@ -79,6 +79,19 @@ bool QHelpDBReader::init() if (!QFile::exists(m_dbName)) return false; + if (!initDB()) { + QSqlDatabase::removeDatabase(m_uniqueId); + return false; + } + + m_initDone = true; + m_query = new QSqlQuery(QSqlDatabase::database(m_uniqueId)); + + return true; +} + +bool QHelpDBReader::initDB() +{ QSqlDatabase db = QSqlDatabase::addDatabase(QLatin1String("QSQLITE"), m_uniqueId); db.setConnectOptions(QLatin1String("QSQLITE_OPEN_READONLY")); db.setDatabaseName(m_dbName); @@ -87,13 +100,8 @@ bool QHelpDBReader::init() %2 - The unique id for the connection %3 - The actual error string */ m_error = tr("Cannot open database '%1' '%2': %3").arg(m_dbName, m_uniqueId, db.lastError().text()); - QSqlDatabase::removeDatabase(m_uniqueId); return false; } - - m_initDone = true; - m_query = new QSqlQuery(db); - return true; } diff --git a/src/assistant/help/qhelpdbreader_p.h b/src/assistant/help/qhelpdbreader_p.h index 48005d35e..aca4c8afa 100644 --- a/src/assistant/help/qhelpdbreader_p.h +++ b/src/assistant/help/qhelpdbreader_p.h @@ -108,6 +108,7 @@ private: const QString &relFileName, const QString &anchor) const; QString mergeList(const QStringList &list) const; QString quote(const QString &string) const; + bool initDB(); bool m_initDone = false; QString m_dbName; -- cgit v1.2.1