Skip to content
Snippets Groups Projects
Commit 489cf2b2 authored by Hugo Lefeuvre's avatar Hugo Lefeuvre Committed by Andreas Traczyk
Browse files

conversationmodel: fix uncatched std::out_of_range


ContactModel::getContact() raises std::out_of_range if it fails to
find the contact. Calls to getContact() should always be protected by
a try catch block.

Change-Id: I4208a72b8ed205ea5811ca0e2f10b745c82b33e5
Reviewed-by: default avatarAndreas Traczyk <andreas.traczyk@savoirfairelinux.com>
parent 514e1c48
Branches
No related tags found
No related merge requests found
...@@ -291,6 +291,7 @@ ConversationModel::allFilteredConversations() const ...@@ -291,6 +291,7 @@ ConversationModel::allFilteredConversations() const
pimpl_->conversations.begin(), pimpl_->conversations.end(), pimpl_->conversations.begin(), pimpl_->conversations.end(),
pimpl_->filteredConversations.begin(), pimpl_->filteredConversations.begin(),
[this] (const conversation::Info& entry) { [this] (const conversation::Info& entry) {
try {
auto contactInfo = owner.contactModel->getContact(entry.participants.front()); auto contactInfo = owner.contactModel->getContact(entry.participants.front());
auto filter = pimpl_->filter; auto filter = pimpl_->filter;
...@@ -353,6 +354,10 @@ ConversationModel::allFilteredConversations() const ...@@ -353,6 +354,10 @@ ConversationModel::allFilteredConversations() const
if (!result && isValidReFilter) result |= std::regex_search(contactInfo.profileInfo.alias, regexFilter); if (!result && isValidReFilter) result |= std::regex_search(contactInfo.profileInfo.alias, regexFilter);
if (!result) result |= filterUriAndReg(contactInfo, filter); if (!result) result |= filterUriAndReg(contactInfo, filter);
return result; return result;
} catch (std::out_of_range&) {
// getContact() failed
return false;
}
}); });
pimpl_->filteredConversations.resize(std::distance(pimpl_->filteredConversations.begin(), it)); pimpl_->filteredConversations.resize(std::distance(pimpl_->filteredConversations.begin(), it));
pimpl_->dirtyConversations.first = false; pimpl_->dirtyConversations.first = false;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment