summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/global/qlogging.cpp2
-rw-r--r--src/corelib/io/qloggingcategory.cpp15
-rw-r--r--src/corelib/io/qloggingcategory.h2
-rw-r--r--tests/auto/corelib/io/qloggingcategory/tst_qloggingcategory.cpp32
4 files changed, 29 insertions, 22 deletions
diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp
index 063e94069f..b9b5173881 100644
--- a/src/corelib/global/qlogging.cpp
+++ b/src/corelib/global/qlogging.cpp
@@ -927,7 +927,7 @@ static void qt_message_print(QtMsgType msgType, const QMessageLogContext &contex
#ifndef QT_BOOTSTRAPPED
// qDebug, qWarning, ... macros do not check whether category is enabled
if (!context.category || (strcmp(context.category, "default") == 0)) {
- if (QLoggingCategory *defaultCategory = &QLoggingCategory::defaultCategory()) {
+ if (QLoggingCategory *defaultCategory = QLoggingCategory::defaultCategory()) {
if (!defaultCategory->isEnabled(msgType))
return;
}
diff --git a/src/corelib/io/qloggingcategory.cpp b/src/corelib/io/qloggingcategory.cpp
index 6c5df1e8e7..2ef392c209 100644
--- a/src/corelib/io/qloggingcategory.cpp
+++ b/src/corelib/io/qloggingcategory.cpp
@@ -244,12 +244,19 @@ void QLoggingCategory::setEnabled(QtMsgType type, bool enable)
*/
/*!
- Returns the category \c "default" that is used e.g. by qDebug(), qWarning(),
- qCritical(), qFatal().
+ Returns a pointer to the global category \c "default" that
+ is used e.g. by qDebug(), qWarning(), qCritical(), qFatal().
+
+ \note The returned pointer may be null during destruction of
+ static objects.
+
+ \note Ownership of the category is not transferred, do not
+ \c delete the returned pointer.
+
*/
-QLoggingCategory &QLoggingCategory::defaultCategory()
+QLoggingCategory *QLoggingCategory::defaultCategory()
{
- return *qtDefaultCategory();
+ return qtDefaultCategory();
}
/*!
diff --git a/src/corelib/io/qloggingcategory.h b/src/corelib/io/qloggingcategory.h
index 35da04c8f2..6009226127 100644
--- a/src/corelib/io/qloggingcategory.h
+++ b/src/corelib/io/qloggingcategory.h
@@ -72,7 +72,7 @@ public:
// allows usage of both factory method and variable in qCX macros
QLoggingCategory &operator()() { return *this; }
- static QLoggingCategory &defaultCategory();
+ static QLoggingCategory *defaultCategory();
typedef void (*CategoryFilter)(QLoggingCategory*);
static CategoryFilter installFilter(CategoryFilter);
diff --git a/tests/auto/corelib/io/qloggingcategory/tst_qloggingcategory.cpp b/tests/auto/corelib/io/qloggingcategory/tst_qloggingcategory.cpp
index df93262d93..a49793c3d4 100644
--- a/tests/auto/corelib/io/qloggingcategory/tst_qloggingcategory.cpp
+++ b/tests/auto/corelib/io/qloggingcategory/tst_qloggingcategory.cpp
@@ -226,7 +226,7 @@ private slots:
void QLoggingCategory_categoryName()
{
logMessage.clear();
- QCOMPARE(QString::fromLatin1(QLoggingCategory::defaultCategory().categoryName()),
+ QCOMPARE(QString::fromLatin1(QLoggingCategory::defaultCategory()->categoryName()),
QStringLiteral("default"));
QLoggingCategory defaultCategory("default");
@@ -237,7 +237,7 @@ private slots:
QCOMPARE(QByteArray(nullCategory.categoryName()), QByteArray("default"));
// we rely on the same pointer for any "default" category
- QCOMPARE(QLoggingCategory::defaultCategory().categoryName(),
+ QCOMPARE(QLoggingCategory::defaultCategory()->categoryName(),
defaultCategory.categoryName());
QCOMPARE(defaultCategory.categoryName(),
nullCategory.categoryName());
@@ -256,12 +256,12 @@ private slots:
{
logMessage.clear();
- QCOMPARE(QLoggingCategory::defaultCategory().isDebugEnabled(), true);
- QCOMPARE(QLoggingCategory::defaultCategory().isEnabled(QtDebugMsg), true);
- QCOMPARE(QLoggingCategory::defaultCategory().isWarningEnabled(), true);
- QCOMPARE(QLoggingCategory::defaultCategory().isEnabled(QtWarningMsg), true);
- QCOMPARE(QLoggingCategory::defaultCategory().isCriticalEnabled(), true);
- QCOMPARE(QLoggingCategory::defaultCategory().isEnabled(QtCriticalMsg), true);
+ QCOMPARE(QLoggingCategory::defaultCategory()->isDebugEnabled(), true);
+ QCOMPARE(QLoggingCategory::defaultCategory()->isEnabled(QtDebugMsg), true);
+ QCOMPARE(QLoggingCategory::defaultCategory()->isWarningEnabled(), true);
+ QCOMPARE(QLoggingCategory::defaultCategory()->isEnabled(QtWarningMsg), true);
+ QCOMPARE(QLoggingCategory::defaultCategory()->isCriticalEnabled(), true);
+ QCOMPARE(QLoggingCategory::defaultCategory()->isEnabled(QtCriticalMsg), true);
QLoggingCategory defaultCategory("default");
QCOMPARE(defaultCategory.isDebugEnabled(), true);
@@ -287,11 +287,11 @@ private slots:
{
logMessage.clear();
- QCOMPARE(QLoggingCategory::defaultCategory().isDebugEnabled(), true);
+ QCOMPARE(QLoggingCategory::defaultCategory()->isDebugEnabled(), true);
- QLoggingCategory::defaultCategory().setEnabled(QtDebugMsg, false);
- QCOMPARE(QLoggingCategory::defaultCategory().isDebugEnabled(), false);
- QLoggingCategory::defaultCategory().setEnabled(QtDebugMsg, true);
+ QLoggingCategory::defaultCategory()->setEnabled(QtDebugMsg, false);
+ QCOMPARE(QLoggingCategory::defaultCategory()->isDebugEnabled(), false);
+ QLoggingCategory::defaultCategory()->setEnabled(QtDebugMsg, true);
// make sure nothing has printed warnings
QVERIFY(logMessage.isEmpty());
@@ -300,13 +300,13 @@ private slots:
void QLoggingCategory_installFilter()
{
- QVERIFY(QLoggingCategory::defaultCategory().isDebugEnabled());
+ QVERIFY(QLoggingCategory::defaultCategory()->isDebugEnabled());
QLoggingCategory::CategoryFilter defaultFilter =
QLoggingCategory::installFilter(customCategoryFilter);
QVERIFY(defaultFilter);
customCategoryFilterArgs.clear();
- QVERIFY(!QLoggingCategory::defaultCategory().isDebugEnabled());
+ QVERIFY(!QLoggingCategory::defaultCategory()->isDebugEnabled());
QLoggingCategory cat("custom");
QCOMPARE(customCategoryFilterArgs, QStringList() << "custom");
@@ -319,7 +319,7 @@ private slots:
QCOMPARE((void*)currentFilter, (void*)customCategoryFilter);
QCOMPARE(customCategoryFilterArgs.size(), 0);
- QVERIFY(QLoggingCategory::defaultCategory().isDebugEnabled());
+ QVERIFY(QLoggingCategory::defaultCategory()->isDebugEnabled());
QVERIFY(!cat.isDebugEnabled());
// install default filter
@@ -328,7 +328,7 @@ private slots:
QCOMPARE((void*)defaultFilter, (void*)currentFilter);
QCOMPARE(customCategoryFilterArgs.size(), 0);
- QVERIFY(QLoggingCategory::defaultCategory().isDebugEnabled());
+ QVERIFY(QLoggingCategory::defaultCategory()->isDebugEnabled());
QVERIFY(!cat.isDebugEnabled());
}