From 410add04fb81bdd334684a51f4f21f18588f8fd6 Mon Sep 17 00:00:00 2001 From: Tobias Fella Date: Wed, 25 Oct 2023 20:41:09 +0200 Subject: [PATCH] Fix subtle erroneous event casts Sometimes, the previous code would static_cast an EncryptedEvent to a RoomMessageEvent. This was mostly unnoticed, since the types are similar enough. --- src/models/messageeventmodel.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/models/messageeventmodel.cpp b/src/models/messageeventmodel.cpp index 140306daf..702b6ef85 100644 --- a/src/models/messageeventmodel.cpp +++ b/src/models/messageeventmodel.cpp @@ -158,8 +158,9 @@ void MessageEventModel::setRoom(NeoChatRoom *room) }); connect(m_currentRoom, &Room::aboutToAddHistoricalMessages, this, [this](RoomEventsRange events) { for (auto &event : events) { - RoomMessageEvent *message = dynamic_cast(event.get()); - createEventObjects(message); + if (const auto &roomMessageEvent = dynamic_cast(event.get())) { + createEventObjects(roomMessageEvent); + } } if (rowCount() > 0) { rowBelowInserted = rowCount() - 1; // See #312 @@ -228,7 +229,9 @@ void MessageEventModel::setRoom(NeoChatRoom *room) } const auto eventIt = m_currentRoom->findInTimeline(eventId); if (eventIt != m_currentRoom->historyEdge()) { - createEventObjects(static_cast(&**eventIt)); + if (const auto &event = dynamic_cast(&**eventIt)) { + createEventObjects(event); + } } refreshEventRoles(eventId, {ReactionRole, ShowReactionsRole, Qt::DisplayRole}); }); @@ -704,10 +707,6 @@ int MessageEventModel::eventIdToRow(const QString &eventID) const void MessageEventModel::createEventObjects(const Quotient::RoomMessageEvent *event) { - if (event == nullptr) { - return; - } - auto eventId = event->id(); EventHandler eventHandler;