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)) { 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); QQmlEngine::setObjectOwnership(member, QQmlEngine::CppOwnership);
return member; return member;
} }
return m_memberObjects[memberId].get(); return m_memberObjects[memberId];
} }
void NeoChatRoom::pinEvent(const QString &eventId) void NeoChatRoom::pinEvent(const QString &eventId)

View File

@@ -642,7 +642,7 @@ private:
void cleanupExtraEventRange(Quotient::RoomEventsRange events); void cleanupExtraEventRange(Quotient::RoomEventsRange events);
void cleanupExtraEvent(const QString &eventId); 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; static std::function<bool(const Quotient::RoomEvent *)> m_hiddenFilter;
private Q_SLOTS: private Q_SLOTS: