sensord: close handles in sensor_loader destructor 07/64507/1
authorkibak.yoon <kibak.yoon@samsung.com>
Thu, 31 Mar 2016 01:41:24 +0000 (10:41 +0900)
committerkibak.yoon <kibak.yoon@samsung.com>
Fri, 1 Apr 2016 10:42:45 +0000 (19:42 +0900)
Change-Id: Ie24606b850a13708956808b36210a86983d62ae3
Signed-off-by: kibak.yoon <kibak.yoon@samsung.com>
src/server/sensor_loader.cpp
src/server/sensor_loader.h

index 785fab2..d525d98 100644 (file)
@@ -50,6 +50,14 @@ sensor_loader::sensor_loader()
 {
 }
 
+sensor_loader::~sensor_loader()
+{
+       for (auto it = m_handles.begin(); it != m_handles.end(); ++it)
+               dlclose(*it);
+
+       m_handles.clear();
+}
+
 sensor_loader& sensor_loader::get_instance()
 {
        static sensor_loader inst;
@@ -79,6 +87,7 @@ bool sensor_loader::load(void)
                [&](const string &path) {
                        void *handle;
                        load_sensor_devices(path, handle);
+                       m_handles.push_back(handle);
                }
        );
 
index 763ea9a..b303301 100644 (file)
@@ -41,6 +41,7 @@ typedef std::map<const sensor_info_t *, sensor_device *> sensor_device_map_t;
 class sensor_loader {
 private:
        sensor_loader();
+       virtual ~sensor_loader();
 
        bool load_sensor_devices(const std::string &path, void* &handle);
 
@@ -54,6 +55,7 @@ private:
 
        sensor_map_t m_sensors;
        sensor_device_map_t m_devices;
+       std::vector<void *> m_handles;
 public:
        static sensor_loader& get_instance();
        bool load(void);