1
0
Fork 0
forked from len0rd/rockbox

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
This commit is contained in:
Dominik Riebeling 2021-12-24 18:06:04 +01:00
parent 774b35cccf
commit c979717b80

View file

@ -600,8 +600,9 @@ Logger::~Logger()
// Cleanup appenders // Cleanup appenders
QMutexLocker appendersLocker(&d->loggerMutex); QMutexLocker appendersLocker(&d->loggerMutex);
#if QT_VERSION >= 0x050e00 #if QT_VERSION >= 0x050e00
QSet<AbstractAppender*> deleteList(QSet<AbstractAppender*>(d->appenders.begin(), d->appenders.end())); QSet<AbstractAppender*> deleteList(d->appenders.begin(), d->appenders.end());
deleteList.unite(QSet<AbstractAppender*>(d->categoryAppenders.values().begin(), d->categoryAppenders.values().end())); auto cal = d->categoryAppenders.values();
deleteList.unite(QSet<AbstractAppender*>(cal.begin(), cal.end()));
#else #else
QSet<AbstractAppender*> deleteList(QSet<AbstractAppender*>::fromList(d->appenders)); QSet<AbstractAppender*> deleteList(QSet<AbstractAppender*>::fromList(d->appenders));
deleteList.unite(QSet<AbstractAppender*>::fromList(d->categoryAppenders.values())); deleteList.unite(QSet<AbstractAppender*>::fromList(d->categoryAppenders.values()));