Fix resource leak 57/104657/2 accepted/tizen/3.0/common/20161216.122750 accepted/tizen/3.0/ivi/20161216.013911 accepted/tizen/3.0/mobile/20161216.013815 accepted/tizen/3.0/tv/20161216.013839 accepted/tizen/3.0/wearable/20161216.013854 submit/tizen_3.0/20161215.010253
authorHwankyu Jhun <h.jhun@samsung.com>
Wed, 14 Dec 2016 04:36:43 +0000 (13:36 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Wed, 14 Dec 2016 04:38:28 +0000 (13:38 +0900)
Change-Id: Ia27ac19283e2b4ffaaba990c7bb8b19a0e1495dd
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/esd_main.c

index c7fb780..1bbe29d 100644 (file)
@@ -2145,6 +2145,7 @@ static int __esd_init()
        client = pkgmgr_client_new(PC_LISTENING);
        if (client == NULL) {
                _E("set pkgmgr client failed");
+               __esd_finish_cynara();
                return ES_R_ERROR;
        }
 
@@ -2154,7 +2155,7 @@ static int __esd_init()
                ret = pkgmgr_client_free(client);
                if (ret != PKGMGR_R_OK)
                        _E("pkgmgr_client_free failed(%d)", ret);
-
+               __esd_finish_cynara();
                return ES_R_ENOMEM;
        }
 
@@ -2164,7 +2165,8 @@ static int __esd_init()
                ret = pkgmgr_client_free(client);
                if (ret != PKGMGR_R_OK)
                        _E("pkgmgr_client_free failed(%d)", ret);
-
+               free(pkg_event);
+               __esd_finish_cynara();
                return ES_R_ERROR;
        }
 
@@ -2269,19 +2271,25 @@ static void __esd_finalize(void)
 
 int main(int argc, char *argv[])
 {
-       GMainLoop *mainloop = NULL;
+       GMainLoop *mainloop;
        _I("event system daemon : main()");
 
        mainloop = g_main_loop_new(NULL, FALSE);
+       if (mainloop == NULL) {
+               _E("out of memory");
+               return ES_R_ERROR;
+       }
 
        if (__esd_init() != 0) {
                _E("ESD Initialization failed!");
+               g_main_loop_unref(mainloop);
                return ES_R_ERROR;
        }
 
        if (__esd_before_loop() < 0) {
                _E("ESD failed!");
                __esd_finalize();
+               g_main_loop_unref(mainloop);
                return ES_R_ERROR;
        }