From 5bf0280b2a534319f02edad0dfdd40f7bb80e7fd Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 8 May 2012 17:09:03 +0200 Subject: [PATCH] Device support: Copy device object when adding to device manager. Otherwise the caller might (inadvertantly) keep a non-const object around and change it behind the device manager's back. Change-Id: I71b3e83e94397416b843006e74dcc1924abed77b Reviewed-by: Tobias Hunger --- src/plugins/projectexplorer/devicesupport/devicemanager.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/plugins/projectexplorer/devicesupport/devicemanager.cpp b/src/plugins/projectexplorer/devicesupport/devicemanager.cpp index a8a079e58f2..e4aaa757c68 100644 --- a/src/plugins/projectexplorer/devicesupport/devicemanager.cpp +++ b/src/plugins/projectexplorer/devicesupport/devicemanager.cpp @@ -218,9 +218,10 @@ QString DeviceManager::settingsFilePath() return QFileInfo(pm->settings()->fileName()).absolutePath() + QLatin1String("/devices.xml"); } -void DeviceManager::addDevice(const IDevice::Ptr &device) +void DeviceManager::addDevice(const IDevice::Ptr &_device) { - QTC_ASSERT(this != instance() || (device->isAutoDetected()), return); + const IDevice::Ptr device = _device->clone(); + QTC_ASSERT(this != instance() || device->isAutoDetected(), return); QString name = device->displayName(); const int pos = indexForId(device->id());