Compare commits

...

1 Commits

Author SHA1 Message Date
Tobias Fella
0566687ba0 Don't store RoomMembers in unique ptrs
Causes crashes due to double-free
2025-09-09 09:34:21 +02:00
2 changed files with 3 additions and 3 deletions

View File

@@ -1744,12 +1744,12 @@ NeochatRoomMember *NeoChatRoom::qmlSafeMember(const QString &memberId)
}
if (!m_memberObjects.contains(memberId)) {
auto member = m_memberObjects.emplace(memberId, std::make_unique<NeochatRoomMember>(this, memberId)).first->second.get();
auto member = m_memberObjects.emplace(memberId, new NeochatRoomMember(this, memberId)).first->second;
QQmlEngine::setObjectOwnership(member, QQmlEngine::CppOwnership);
return member;
}
return m_memberObjects[memberId].get();
return m_memberObjects[memberId];
}
void NeoChatRoom::pinEvent(const QString &eventId)

View File

@@ -642,7 +642,7 @@ private:
void cleanupExtraEventRange(Quotient::RoomEventsRange events);
void cleanupExtraEvent(const QString &eventId);
std::unordered_map<QString, std::unique_ptr<NeochatRoomMember>> m_memberObjects;
std::unordered_map<QString, NeochatRoomMember *> m_memberObjects;
static std::function<bool(const Quotient::RoomEvent *)> m_hiddenFilter;
private Q_SLOTS: