From d24cef5e17139370baf55f22698be08c0cc956cc Mon Sep 17 00:00:00 2001 From: Gaelle Braud Date: Mon, 5 May 2025 10:15:07 +0200 Subject: [PATCH] try to fix crash in chatrooms --- Linphone/core/chat/ChatCore.cpp | 14 ++++++++------ Linphone/model/chat/ChatModel.cpp | 9 +++++++-- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Linphone/core/chat/ChatCore.cpp b/Linphone/core/chat/ChatCore.cpp index 02ffe9c18..266e7f016 100644 --- a/Linphone/core/chat/ChatCore.cpp +++ b/Linphone/core/chat/ChatCore.cpp @@ -49,12 +49,14 @@ ChatCore::ChatCore(const std::shared_ptr &chatRoom) : QObjec } else { if (chatRoom->hasCapability((int)linphone::ChatRoom::Capabilities::OneToOne)) { auto participants = chatRoom->getParticipants(); - auto peer = participants.front(); - if (peer) mTitle = ToolModel::getDisplayName(peer->getAddress()->clone()); - mAvatarUri = ToolModel::getDisplayName(peer->getAddress()->clone()); - if (participants.size() == 1) { - auto peerAddress = peer->getAddress(); - if (peerAddress) mPeerAddress = Utils::coreStringToAppString(peerAddress->asStringUriOnly()); + if (participants.size() > 0) { + auto peer = participants.front(); + if (peer) mTitle = ToolModel::getDisplayName(peer->getAddress()->clone()); + mAvatarUri = ToolModel::getDisplayName(peer->getAddress()->clone()); + if (participants.size() == 1) { + auto peerAddress = peer->getAddress(); + if (peerAddress) mPeerAddress = Utils::coreStringToAppString(peerAddress->asStringUriOnly()); + } } } else if (chatRoom->hasCapability((int)linphone::ChatRoom::Capabilities::Conference)) { mTitle = Utils::coreStringToAppString(chatRoom->getSubject()); diff --git a/Linphone/model/chat/ChatModel.cpp b/Linphone/model/chat/ChatModel.cpp index 196140463..700888ee5 100644 --- a/Linphone/model/chat/ChatModel.cpp +++ b/Linphone/model/chat/ChatModel.cpp @@ -63,8 +63,13 @@ QString ChatModel::getTitle() { return ToolModel::getDisplayName(mMonitor->getPeerAddress()->clone()); } else { if (mMonitor->hasCapability((int)linphone::ChatRoom::Capabilities::OneToOne)) { - auto peer = mMonitor->getParticipants().front(); - return peer ? ToolModel::getDisplayName(peer->getAddress()->clone()) : "Chat"; + auto participants = mMonitor->getParticipants(); + if (participants.size() > 0) { + auto peer = participants.front(); + return peer ? ToolModel::getDisplayName(peer->getAddress()->clone()) : ""; + } else { + return ""; + } } else if (mMonitor->hasCapability((int)linphone::ChatRoom::Capabilities::Conference)) { return Utils::coreStringToAppString(mMonitor->getSubject()); }