Fix resource leak 08/65408/3 accepted/tizen/common/20160412.130739 accepted/tizen/ivi/20160412.063707 accepted/tizen/mobile/20160412.063525 accepted/tizen/tv/20160412.063725 accepted/tizen/wearable/20160412.063629 submit/tizen/20160411.223138
authorHwankyu Jhun <h.jhun@samsung.com>
Sun, 10 Apr 2016 22:59:19 +0000 (07:59 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Mon, 11 Apr 2016 00:48:43 +0000 (09:48 +0900)
Change-Id: Ided78920a8b2e1199ab1bc4cd16ee4c7704e413c
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/common.c
src/debug-launchpad.c

index 7ff591a..ff3f6ee 100644 (file)
@@ -672,20 +672,19 @@ char **_create_argc_argv(bundle *kb, int *margc, const char *app_path)
                        argv = new_argv;
                } else if (strncmp(str_array[i], SDK_ATTACH,
                                        strlen(str_array[i])) == 0) {
+                       if (argv[0])
+                               free(argv[0]);
+                       bundle_free_exported_argv(argc, &argv);
+                       *margc = 0;
                        path = bundle_get_val(kb, DLP_K_GDBSERVER_PATH);
                        if (path == NULL) {
                                _E("Failed to get gdbserver path");
-                               if (argv[0])
-                                       free(argv[0]);
-                               bundle_free_exported_argv(argc, &argv);
-                               *margc = 0;
                                return NULL;
                        }
                        new_argv = __add_arg(kb, argv, &argc, DLP_K_ATTACH_ARG);
                        new_argv[0] = strdup(path);
                        argv = new_argv;
                }
-
        }
 
        *margc = argc;
index bbe7b60..ed5d636 100644 (file)
@@ -425,11 +425,26 @@ static gboolean __glib_prepare(GSource *src, gint *timeout)
        return FALSE;
 }
 
+static void __glib_finalize(GSource *src)
+{
+       GSList *fd_list;
+       GPollFD *gpollfd;
+
+       fd_list = src->poll_fds;
+       do {
+               gpollfd = (GPollFD *)fd_list->data;
+               close(gpollfd->fd);
+               g_free(gpollfd);
+
+               fd_list = fd_list->next;
+       } while (fd_list);
+}
+
 static GSourceFuncs funcs = {
        .prepare = __glib_prepare,
        .check = __glib_check,
        .dispatch = __glib_dispatch,
-       .finalize = NULL
+       .finalize = __glib_finalize
 };
 
 static int __poll_fd(int fd, GSourceFunc callback)