Fix memory leak 88/174488/2
authorhyunho <hhstark.kang@samsung.com>
Mon, 2 Apr 2018 10:23:48 +0000 (19:23 +0900)
committerhyunho <hhstark.kang@samsung.com>
Mon, 2 Apr 2018 11:04:30 +0000 (20:04 +0900)
Change-Id: Ife61f65f347d91890635c9a38445509545ac2ae8
Signed-off-by: hyunho <hhstark.kang@samsung.com>
screen_connector_provider/src/screen_connector_provider.c
screen_connector_remote_surface/remote_surface_manager.cc

index 671ef5a..24add27 100755 (executable)
@@ -194,7 +194,8 @@ EXPORT_API int screen_connector_provider_set_event_filter(screen_connector_provi
        return 0;
 }
 
-static void __shutdown_ecore_wl2_display() {
+static void __shutdown_ecore_wl2_display()
+{
        LOGE("disconnect wl2_display");
        ecore_wl2_display_disconnect(ecore_wl2_connected_display_get(NULL));
        ecore_wl2_shutdown();
@@ -226,6 +227,7 @@ EXPORT_API int screen_connector_provider_init(void)
                LOGE("could not get registry(%p) or global list(%p)", registry,
                                globals);
                __shutdown_ecore_wl2_display();
+               eina_iterator_free(globals);
                return -1;
        }
 
@@ -240,8 +242,10 @@ EXPORT_API int screen_connector_provider_init(void)
        if (!__rsm) {
                LOGE("could not get remote surface manager");
                __shutdown_ecore_wl2_display();
+               eina_iterator_free(globals);
                return -1;
        }
+       eina_iterator_free(globals);
        __init_count++;
 
        return 0;
index eb92a67..442c670 100644 (file)
@@ -111,6 +111,7 @@ void RemoteSurfaceManager::Init() {
     LOGE("disconnect wl2_display");
     ecore_wl2_display_disconnect(ecore_wl2_connected_display_get(NULL));
     ecore_wl2_shutdown();
+    eina_iterator_free(globals);
     return;
   }
 
@@ -123,6 +124,7 @@ void RemoteSurfaceManager::Init() {
     LOGE("disconnect wl2_display");
     ecore_wl2_display_disconnect(ecore_wl2_connected_display_get(NULL));
     ecore_wl2_shutdown();
+    eina_iterator_free(globals);
     return;
   }
 
@@ -136,9 +138,10 @@ void RemoteSurfaceManager::Init() {
     LOGE("disconnect wl2_display");
     ecore_wl2_display_disconnect(ecore_wl2_connected_display_get(NULL));
     ecore_wl2_shutdown();
+    eina_iterator_free(globals);
     return;
   }
-
+  eina_iterator_free(globals);
   is_init_ = true;
 }