From c979717b806479e5c429c89dc2800367df28b372 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Fri, 24 Dec 2021 18:06:04 +0100 Subject: rbutil: Fix logger segfault on application exit. Getting the values from a QMultiMap() returns a list, but not the same on consecutive calls. Thus calling it twice to get the iterators will yield different lists, causing the iterator to fail. Fixes a segfault when destructing the logger. Change-Id: Ie8ea8d3a9acf6fbd3969fbb49cbc50a1c1fa2854 --- utils/rbutilqt/logger/src/Logger.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'utils/rbutilqt/logger/src/Logger.cpp') diff --git a/utils/rbutilqt/logger/src/Logger.cpp b/utils/rbutilqt/logger/src/Logger.cpp index b813947efe..5499d03fcd 100644 --- a/utils/rbutilqt/logger/src/Logger.cpp +++ b/utils/rbutilqt/logger/src/Logger.cpp @@ -600,8 +600,9 @@ Logger::~Logger() // Cleanup appenders QMutexLocker appendersLocker(&d->loggerMutex); #if QT_VERSION >= 0x050e00 - QSet deleteList(QSet(d->appenders.begin(), d->appenders.end())); - deleteList.unite(QSet(d->categoryAppenders.values().begin(), d->categoryAppenders.values().end())); + QSet deleteList(d->appenders.begin(), d->appenders.end()); + auto cal = d->categoryAppenders.values(); + deleteList.unite(QSet(cal.begin(), cal.end())); #else QSet deleteList(QSet::fromList(d->appenders)); deleteList.unite(QSet::fromList(d->categoryAppenders.values())); -- cgit v1.2.3