From 2de3d840296321b2b212da8e0d7461dbc8ed147d Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Wed, 16 Aug 2017 11:29:02 +0200 Subject: [PATCH] fix(SipAddressesModel): avoid a crash when a sip address observer is destroyed --- src/components/sip-addresses/SipAddressesModel.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/sip-addresses/SipAddressesModel.cpp b/src/components/sip-addresses/SipAddressesModel.cpp index cc1a1eaed..160d2c982 100644 --- a/src/components/sip-addresses/SipAddressesModel.cpp +++ b/src/components/sip-addresses/SipAddressesModel.cpp @@ -116,10 +116,10 @@ SipAddressObserver *SipAddressesModel::getSipAddressObserver (const QString &sip mObservers.insert(cleanedSipAddress, model); QObject::connect( - model, &SipAddressObserver::destroyed, this, [this, model]() { - const QString sipAddress = cleanSipAddress(model->getSipAddress()); - if (mObservers.remove(sipAddress, model) == 0) - qWarning() << QStringLiteral("Unable to remove sip address `%1` from observers.").arg(sipAddress); + model, &SipAddressObserver::destroyed, this, [this, model, cleanedSipAddress]() { + // Do not use `model` methods here. `model` is partially destroyed here! + if (mObservers.remove(cleanedSipAddress, model) == 0) + qWarning() << QStringLiteral("Unable to remove sip address `%1` from observers.").arg(cleanedSipAddress); }); return model;