From 9cb8df0b2d630b3e434b107884d4d5eecb5e3255 Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Tue, 5 Oct 2021 14:32:15 +0200 Subject: [PATCH] Fix a multithreaded crash when searching with MagicSearch --- .../src/components/search/SearchSipAddressesModel.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/linphone-app/src/components/search/SearchSipAddressesModel.cpp b/linphone-app/src/components/search/SearchSipAddressesModel.cpp index 3acb447fb..48d3295cf 100644 --- a/linphone-app/src/components/search/SearchSipAddressesModel.cpp +++ b/linphone-app/src/components/search/SearchSipAddressesModel.cpp @@ -50,7 +50,7 @@ SearchSipAddressesModel::SearchSipAddressesModel (QObject *parent) : QAbstractLi mMagicSearch = CoreManager::getInstance()->getCore()->createMagicSearch(); mSearch = std::make_shared(this); - QObject::connect(mSearch.get(), SIGNAL(searchReceived(std::list> )), this, SLOT(searchReceived(std::list>))); + QObject::connect(mSearch.get(), &SearchHandler::searchReceived, this, &SearchSipAddressesModel::searchReceived, Qt::QueuedConnection); mMagicSearch->addListener(mSearch); } @@ -111,9 +111,10 @@ void SearchSipAddressesModel::setFilter(const QString& filter){ } void SearchSipAddressesModel::searchReceived(std::list> results){ - beginResetModel(); - mAddresses.clear(); + QList > addresses; for(auto it = results.begin() ; it != results.end() ; ++it) - mAddresses << std::make_shared((*it)->getFriend(), (*it)->getAddress()); + addresses << std::make_shared((*it)->getFriend(), (*it)->getAddress()); + beginResetModel(); + mAddresses = addresses; endResetModel(); }