diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp index 013efec3d5..465e2a4b45 100644 --- a/src/corelib/global/qlogging.cpp +++ b/src/corelib/global/qlogging.cpp @@ -1161,10 +1161,14 @@ QString qFormatLogMessage(QtMsgType type, const QMessageLogContext &context, con if (numberPrinted > 0) message.append(pattern->backtraceSeparator); - if (function.isEmpty()) - message += QLatin1Char('?') + library + QLatin1Char('?'); - else + if (function.isEmpty()) { + if (numberPrinted == 0 && context.function) + message += QString::fromUtf8(qCleanupFuncinfo(context.function)); + else + message += QLatin1Char('?') + library + QLatin1Char('?'); + } else { message += function; + } } else { if (numberPrinted == 0) diff --git a/tests/auto/corelib/global/qlogging/tst_qlogging.cpp b/tests/auto/corelib/global/qlogging/tst_qlogging.cpp index 1df5404995..ccf0d2d4a8 100644 --- a/tests/auto/corelib/global/qlogging/tst_qlogging.cpp +++ b/tests/auto/corelib/global/qlogging/tst_qlogging.cpp @@ -720,7 +720,8 @@ void tst_qmessagehandler::qMessagePattern_data() #endif QTest::newRow("backtrace depth,separator") << "[%{backtrace depth=2 separator=\"\n\"}] %{message}" << true << (QList() - << "[MyClass::myFunction\nMyClass::mySlot1] from_a_function 34"); + << "[MyClass::myFunction\nMyClass::mySlot1] from_a_function 34" + << "[T::T\n"); #endif }