From 0c6d5d6aed6bcd4350f96c31ad5e4e4f9c32e821 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Thu, 23 Mar 2017 09:06:41 +0200 Subject: [PATCH] BareMetal: Fix crash on shutdown Change-Id: I40c2381f5d70d57c8bb7b6d4727a5350a52eefc5 Reviewed-by: Denis Shienkov Reviewed-by: hjk --- src/plugins/baremetal/baremetaldevice.cpp | 6 ++++++ src/plugins/baremetal/baremetaldevice.h | 1 + src/plugins/baremetal/gdbserverprovider.cpp | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/plugins/baremetal/baremetaldevice.cpp b/src/plugins/baremetal/baremetaldevice.cpp index e5b22b5e214..b0e2c20db35 100644 --- a/src/plugins/baremetal/baremetaldevice.cpp +++ b/src/plugins/baremetal/baremetaldevice.cpp @@ -83,6 +83,12 @@ void BareMetalDevice::setGdbServerProviderId(const QString &id) } } +void BareMetalDevice::unregisterProvider(GdbServerProvider *provider) +{ + if (provider->id() == m_gdbServerProviderId) + m_gdbServerProviderId.clear(); +} + void BareMetalDevice::providerUpdated(GdbServerProvider *provider) { GdbServerProvider *myProvider = GdbServerProviderManager::findProvider(m_gdbServerProviderId); diff --git a/src/plugins/baremetal/baremetaldevice.h b/src/plugins/baremetal/baremetaldevice.h index 75d549b2932..a82cdfea0e6 100644 --- a/src/plugins/baremetal/baremetaldevice.h +++ b/src/plugins/baremetal/baremetaldevice.h @@ -59,6 +59,7 @@ public: QString gdbServerProviderId() const; void setGdbServerProviderId(const QString &id); + void unregisterProvider(GdbServerProvider *provider); void providerUpdated(GdbServerProvider *provider); virtual void fromMap(const QVariantMap &map) override; diff --git a/src/plugins/baremetal/gdbserverprovider.cpp b/src/plugins/baremetal/gdbserverprovider.cpp index 3491ec3ad01..afcce6dcaee 100644 --- a/src/plugins/baremetal/gdbserverprovider.cpp +++ b/src/plugins/baremetal/gdbserverprovider.cpp @@ -78,7 +78,7 @@ GdbServerProvider::~GdbServerProvider() { const QSet devices = m_devices; for (BareMetalDevice *device : devices) - device->setGdbServerProviderId(QString()); + device->unregisterProvider(this); } QString GdbServerProvider::displayName() const