From 4c34f4bfee284f0065f4b72c5a12649d664acf43 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sat, 21 Jan 2023 20:36:17 +0100 Subject: Work around multiple destructor calls after consteval construction in full expression I have no idea, if this is our fault or not, but Jason traced it back to the consteval on the {fmt} format string constructor. Specifically when a consteval constructor call happens in the statement, the destructor call is moved to the end of the block. Inside the switch statement that means, the destructor is called multiple times, which corrupts the use count and crashes Nheko because of a double free. I am assuming this is a bug in clang, but this will need to be investigated more. fixes #1292 --- src/Logging.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/Logging.cpp b/src/Logging.cpp index c41d3f82..46df8399 100644 --- a/src/Logging.cpp +++ b/src/Logging.cpp @@ -45,19 +45,19 @@ qmlMessageHandler(QtMsgType type, const QMessageLogContext &context, const QStri switch (type) { case QtDebugMsg: - nhlog::qml()->debug("{} ({}:{}, {})", localMsg, file, context.line, function); + qml_logger->debug("{} ({}:{}, {})", localMsg, file, context.line, function); break; case QtInfoMsg: - nhlog::qml()->info("{} ({}:{}, {})", localMsg, file, context.line, function); + qml_logger->info("{} ({}:{}, {})", localMsg, file, context.line, function); break; case QtWarningMsg: - nhlog::qml()->warn("{} ({}:{}, {})", localMsg, file, context.line, function); + qml_logger->warn("{} ({}:{}, {})", localMsg, file, context.line, function); break; case QtCriticalMsg: - nhlog::qml()->critical("{} ({}:{}, {})", localMsg, file, context.line, function); + qml_logger->critical("{} ({}:{}, {})", localMsg, file, context.line, function); break; case QtFatalMsg: - nhlog::qml()->critical("{} ({}:{}, {})", localMsg, file, context.line, function); + qml_logger->critical("{} ({}:{}, {})", localMsg, file, context.line, function); break; } } -- cgit 1.5.1