Fix memory leak 32/122532/1
authorseungha.son <seungha.son@samsung.com>
Mon, 3 Apr 2017 00:39:45 +0000 (09:39 +0900)
committerHyunho Kang <hhstark.kang@samsung.com>
Mon, 3 Apr 2017 02:23:56 +0000 (19:23 -0700)
Signed-off-by: seungha.son <seungha.son@samsung.com>
Change-Id: I81669725500ecf915feca52bbb303aa8cb55bea1
(cherry picked from commit 7dc3034997783c336c8fcaab761d4cfffa93a0e9)

screen_connector_watcher_evas/src/screen_connector_watcher_evas.c

index 3f0eddc..0e4d177 100644 (file)
@@ -231,18 +231,22 @@ static void __watcher_update_cb(struct tizen_remote_surface *trs, uint32_t type,
 
 EXPORT_API screen_connector_watcher_evas_h screen_connector_watcher_evas_add(screen_connector_watcher_evas_ops *ops, void *data)
 {
-
        screen_connector_watcher_evas_h handle;
        screen_connector_watcher_evas_ops *evas_ops;
        screen_connector_watcher_ops *watcher_ops;
 
        watcher_ops = (screen_connector_watcher_ops *)calloc(1, sizeof(screen_connector_watcher_ops));
+       if (watcher_ops == NULL) {
+               LOGE("watcher_ops calloc fail");
+               return NULL;
+       }
        watcher_ops->added_cb = __watcher_added_cb;
        watcher_ops->updated_cb = __watcher_update_cb;
        watcher_ops->removed_cb = __watcher_removed_cb;
 
        evas_ops = (screen_connector_watcher_evas_ops *)calloc(1, sizeof(screen_connector_watcher_evas_ops));
        if (evas_ops == NULL) {
+               free(watcher_ops);
                LOGE("evas_ops calloc fail");
                return NULL;
        }
@@ -251,6 +255,7 @@ EXPORT_API screen_connector_watcher_evas_h screen_connector_watcher_evas_add(scr
        handle = (screen_connector_watcher_evas_h)calloc(1, sizeof(struct _screen_connector_watcher_evas_h));
        if (handle == NULL) {
                LOGE("handle calloc fail");
+               free(watcher_ops);
                free(evas_ops);
                return NULL;
        }
@@ -259,7 +264,6 @@ EXPORT_API screen_connector_watcher_evas_h screen_connector_watcher_evas_add(scr
        handle->watcher_h = screen_connector_watcher_add(watcher_ops, handle);
 
        return handle;
-
 }
 
 static void __destroy_watcher_evas_handle(screen_connector_watcher_evas_h watcher_evas_h)