From 8e0e45a0a1214ae07ecf3d5b56a9c6971dfe6a09 Mon Sep 17 00:00:00 2001 From: "jyong2.kim" Date: Wed, 24 Feb 2016 14:24:04 +0900 Subject: [PATCH] Fix for defects detected by static analysis in Resource Broker/Cache/Hosting. fix memory leak. define copy constructor. catch exception at destructor. Change-Id: I52ed517449603b58f0fc04619e02757e67abf55d Signed-off-by: jyong2.kim Reviewed-on: https://gerrit.iotivity.org/gerrit/5163 Tested-by: jenkins-iotivity Reviewed-by: Uze Choi --- .../src/resourceBroker/include/DevicePresence.h | 6 ++++++ .../src/resourceBroker/src/DevicePresence.cpp | 8 +++++++- .../src/resourceBroker/src/ResourceBroker.cpp | 1 - .../resource-encapsulation/src/resourceCache/include/DataCache.h | 5 +++++ 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/service/resource-encapsulation/src/resourceBroker/include/DevicePresence.h b/service/resource-encapsulation/src/resourceBroker/include/DevicePresence.h index cfb7bc9..c34f876 100644 --- a/service/resource-encapsulation/src/resourceBroker/include/DevicePresence.h +++ b/service/resource-encapsulation/src/resourceBroker/include/DevicePresence.h @@ -42,6 +42,12 @@ namespace OIC DevicePresence(); ~DevicePresence(); + DevicePresence(DevicePresence &&) = delete; + DevicePresence(const DevicePresence &) = delete; + + DevicePresence & operator = (DevicePresence &&) = delete; + DevicePresence & operator = (const DevicePresence &) = delete; + void initializeDevicePresence(PrimitiveResourcePtr pResource); void addPresenceResource(ResourcePresence * rPresence); diff --git a/service/resource-encapsulation/src/resourceBroker/src/DevicePresence.cpp b/service/resource-encapsulation/src/resourceBroker/src/DevicePresence.cpp index 33baf31..8d7391d 100644 --- a/service/resource-encapsulation/src/resourceBroker/src/DevicePresence.cpp +++ b/service/resource-encapsulation/src/resourceBroker/src/DevicePresence.cpp @@ -42,7 +42,13 @@ namespace OIC if(presenceSubscriber.isSubscribing()) { OIC_LOG_V(DEBUG,BROKER_TAG,"unsubscribed presence."); - presenceSubscriber.unsubscribe(); + try + { + presenceSubscriber.unsubscribe(); + } catch (std::exception & e) + { + OIC_LOG_V(DEBUG,BROKER_TAG,"unsubscribed presence : %s", e.what()); + } } resourcePresenceList.clear(); OIC_LOG_V(DEBUG,BROKER_TAG,"destroy Timer."); diff --git a/service/resource-encapsulation/src/resourceBroker/src/ResourceBroker.cpp b/service/resource-encapsulation/src/resourceBroker/src/ResourceBroker.cpp index 559b932..79f9e9d 100644 --- a/service/resource-encapsulation/src/resourceBroker/src/ResourceBroker.cpp +++ b/service/resource-encapsulation/src/resourceBroker/src/ResourceBroker.cpp @@ -44,7 +44,6 @@ namespace OIC { OIC_LOG_V(DEBUG, BROKER_TAG, "clear the brokerIDMap."); s_brokerIDMap->erase(s_brokerIDMap->begin(), s_brokerIDMap->end()); - s_brokerIDMap->clear(); } } diff --git a/service/resource-encapsulation/src/resourceCache/include/DataCache.h b/service/resource-encapsulation/src/resourceCache/include/DataCache.h index 090ef8a..025aca6 100644 --- a/service/resource-encapsulation/src/resourceCache/include/DataCache.h +++ b/service/resource-encapsulation/src/resourceCache/include/DataCache.h @@ -43,6 +43,11 @@ namespace OIC DataCache(); ~DataCache(); + DataCache(const DataCache &) = default; + DataCache(DataCache &&) = default; + DataCache & operator = (const DataCache &) = default; + DataCache & operator = (DataCache &&) = default; + void initializeDataCache(PrimitiveResourcePtr pResource); CacheID addSubscriber(CacheCB func, REPORT_FREQUENCY rf, long repeatTime); -- 2.7.4