diff --git a/src/conversationmodel.cpp b/src/conversationmodel.cpp index aa2f7ebfba335b950dfc4050004f52e416b485b2..61093d44054bfc6271c804e919c1fe3078c514ee 100644 --- a/src/conversationmodel.cpp +++ b/src/conversationmodel.cpp @@ -3181,16 +3181,18 @@ ConversationModelPimpl::addOrUpdateCallMessage(const QString& callId, auto msgId = storage::addOrUpdateMessage(db, conv_it->uid, msg, callId); // now set the formatted call message string in memory only msg.body = storage::getCallInteractionString(uriString, duration); - auto interactionIt = conv_it->interactions->find(msgId); - auto newInteraction = interactionIt == conv_it->interactions->end(); - if (newInteraction) { - conv_it->lastMessageUid = msgId; - std::lock_guard<std::mutex> lk(interactionsLocks[conv_it->uid]); - conv_it->interactions->emplace(msgId, msg); - } else { + bool newInteraction = false; + { std::lock_guard<std::mutex> lk(interactionsLocks[conv_it->uid]); - interactionIt->second = msg; - conv_it->interactions->emitDataChanged(interactionIt); + auto interactionIt = conv_it->interactions->find(msgId); + newInteraction = interactionIt == conv_it->interactions->end(); + if (newInteraction) { + conv_it->lastMessageUid = msgId; + conv_it->interactions->emplace(msgId, msg); + } else { + interactionIt->second = msg; + conv_it->interactions->emitDataChanged(interactionIt); + } } if (newInteraction)