summaryrefslogtreecommitdiffstats
path: root/src/sql/kernel/qsqldatabase.cpp
diff options
context:
space:
mode:
authorChristian Ehrlicher <[email protected]>2023-10-10 18:54:27 +0200
committerChristian Ehrlicher <[email protected]>2023-10-12 06:16:46 +0200
commitd70b873c3752ff5a4103702148f9fd2593815341 (patch)
treed9b64ba90fa7d002997a4cbc2aa9e40d13e4bca8 /src/sql/kernel/qsqldatabase.cpp
parent9a0ae6c13bb8ad6c883285fea6fe494b532fc5e5 (diff)
QSqlDatabase: check if QCoreApplication::instance() exists
Check if QCoreApplication::instance() and print a warning if not instead creating and assertion later on. Fixes: QTBUG-117621 Change-Id: Iffb4f7097edbbaf19cb584bff6e5ba1535bf88a0 Reviewed-by: Friedemann Kleint <[email protected]> Reviewed-by: Volker Hilsheimer <[email protected]> Reviewed-by: Qt CI Bot <[email protected]>
Diffstat (limited to 'src/sql/kernel/qsqldatabase.cpp')
-rw-r--r--src/sql/kernel/qsqldatabase.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp
index d9738bd9888..fdc1eb4df82 100644
--- a/src/sql/kernel/qsqldatabase.cpp
+++ b/src/sql/kernel/qsqldatabase.cpp
@@ -19,6 +19,17 @@ QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
+#define CHECK_QCOREAPPLICATION \
+ if (Q_UNLIKELY(!QCoreApplication::instance())) { \
+ qWarning("QSqlDatabase requires a QCoreApplication"); \
+ return; \
+ }
+#define CHECK_QCOREAPPLICATION_RETVAL \
+ if (Q_UNLIKELY(!QCoreApplication::instance())) { \
+ qWarning("QSqlDatabase requires a QCoreApplication"); \
+ return {}; \
+ }
+
Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader,
(QSqlDriverFactoryInterface_iid, "/sqldrivers"_L1))
@@ -132,6 +143,7 @@ void QSqlDatabasePrivate::invalidateDb(const QSqlDatabase &db, const QString &na
void QSqlDatabasePrivate::removeDatabase(const QString &name)
{
+ CHECK_QCOREAPPLICATION
QtSqlGlobals *sqlGlobals = s_sqlGlobals();
QWriteLocker locker(&sqlGlobals->lock);
@@ -143,6 +155,7 @@ void QSqlDatabasePrivate::removeDatabase(const QString &name)
void QSqlDatabasePrivate::addDatabase(const QSqlDatabase &db, const QString &name)
{
+ CHECK_QCOREAPPLICATION
QtSqlGlobals *sqlGlobals = s_sqlGlobals();
QWriteLocker locker(&sqlGlobals->lock);
@@ -159,6 +172,7 @@ void QSqlDatabasePrivate::addDatabase(const QSqlDatabase &db, const QString &nam
*/
QSqlDatabase QSqlDatabasePrivate::database(const QString& name, bool open)
{
+ CHECK_QCOREAPPLICATION_RETVAL
QSqlDatabase db = s_sqlGlobals()->connection(name);
if (!db.isValid())
return db;
@@ -460,6 +474,7 @@ void QSqlDatabase::removeDatabase(const QString& connectionName)
QStringList QSqlDatabase::drivers()
{
+ CHECK_QCOREAPPLICATION_RETVAL
QStringList list;
if (QFactoryLoader *fl = loader()) {
@@ -498,6 +513,7 @@ QStringList QSqlDatabase::drivers()
*/
void QSqlDatabase::registerSqlDriver(const QString& name, QSqlDriverCreatorBase *creator)
{
+ CHECK_QCOREAPPLICATION
QtSqlGlobals *sqlGlobals = s_sqlGlobals();
QWriteLocker locker(&sqlGlobals->lock);
delete sqlGlobals->registeredDrivers.take(name);
@@ -516,6 +532,7 @@ void QSqlDatabase::registerSqlDriver(const QString& name, QSqlDriverCreatorBase
bool QSqlDatabase::contains(const QString& connectionName)
{
+ CHECK_QCOREAPPLICATION_RETVAL
return s_sqlGlobals()->connectionExists(connectionName);
}
@@ -528,6 +545,7 @@ bool QSqlDatabase::contains(const QString& connectionName)
*/
QStringList QSqlDatabase::connectionNames()
{
+ CHECK_QCOREAPPLICATION_RETVAL
return s_sqlGlobals()->connectionNames();
}
@@ -612,6 +630,7 @@ QSqlDatabase &QSqlDatabase::operator=(const QSqlDatabase &other)
void QSqlDatabasePrivate::init(const QString &type)
{
+ CHECK_QCOREAPPLICATION
drvName = type;
if (!driver) {
@@ -1257,6 +1276,7 @@ QSqlDatabase QSqlDatabase::cloneDatabase(const QSqlDatabase &other, const QStrin
QSqlDatabase QSqlDatabase::cloneDatabase(const QString &other, const QString &connectionName)
{
+ CHECK_QCOREAPPLICATION_RETVAL
return cloneDatabase(s_sqlGlobals()->connection(other), connectionName);
}