From e39c0d5424e13cebe9190f369c09be17a4d24fba Mon Sep 17 00:00:00 2001 From: Wolfgang Frisch Date: Mon, 2 May 2022 23:54:03 +0200 Subject: [PATCH] Fix race condition of ConversationModel::clear() When the ConversationModel is cleared after sending a message but before the acknowledgement is received, Ricochet crashes. issue blueprint-freespeech/ricochet-refresh#150 --- src/libtego_ui/shims/ConversationModel.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/libtego_ui/shims/ConversationModel.cpp b/src/libtego_ui/shims/ConversationModel.cpp index 72daa891..9e6a9b8e 100644 --- a/src/libtego_ui/shims/ConversationModel.cpp +++ b/src/libtego_ui/shims/ConversationModel.cpp @@ -680,6 +680,13 @@ namespace shims void ConversationModel::messageAcknowledged(tego_message_id_t messageId, bool accepted) { + if (messages.size() == 0) { + // Reached when the model is cleared after an outgoing message was sent, + // but before it is acknowledged. + // https://github.com/blueprint-freespeech/ricochet-refresh/issues/150 + return; + } + auto row = this->indexOfOutgoingMessage(messageId); Q_ASSERT(row >= 0);