From 23c87ff3415efecf746b9a1baa9eac980f02ec02 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 28 Aug 2023 19:32:27 -0700 Subject: [PATCH] QLogging: attempt to free memory in qt_message() before abort() Just so memory leak checkers won't complain. Change-Id: I2b24e1d3cad44897906efffd177fb9ddf0eb0a2a Reviewed-by: Edward Welbourne (cherry picked from commit b24630ce028847e52dfcf23769f5d19fb1c33c03) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/global/qlogging.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp index db0f5e32530..a63149f0ee8 100644 --- a/src/corelib/global/qlogging.cpp +++ b/src/corelib/global/qlogging.cpp @@ -163,10 +163,11 @@ Q_TRACE_POINT(qtcore, qt_message_print, int type, const char *category, const ch \snippet code/src_corelib_global_qglobal.cpp 4 */ +template #if !defined(Q_CC_MSVC_ONLY) Q_NORETURN #endif -static void qt_message_fatal(QtMsgType, const QMessageLogContext &context, const QString &message); +static void qt_message_fatal(QtMsgType, const QMessageLogContext &context, String &&message); static void qt_message_print(QtMsgType, const QMessageLogContext &context, const QString &message); static void qt_message_print(const QString &message); @@ -1998,7 +1999,8 @@ static void qt_message_print(const QString &message) fflush(stderr); } -static void qt_message_fatal(QtMsgType, const QMessageLogContext &context, const QString &message) +template +static void qt_message_fatal(QtMsgType, const QMessageLogContext &context, String &&message) { #if defined(Q_CC_MSVC_ONLY) && defined(QT_DEBUG) && defined(_DEBUG) && defined(_CRT_ERROR) wchar_t contextFileL[256]; @@ -2019,13 +2021,15 @@ static void qt_message_fatal(QtMsgType, const QMessageLogContext &context, const _CrtDbgBreak(); #else Q_UNUSED(context); - Q_UNUSED(message); #endif + if constexpr (std::is_class_v && !std::is_const_v) + message.clear(); + else + Q_UNUSED(message); qAbort(); } - /*! \internal */