From d3ad2a36544fbee84fe740b793f87972f074fb93 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Mon, 11 Apr 2016 07:59:19 +0900 Subject: [PATCH] Fix resource leak Change-Id: Ided78920a8b2e1199ab1bc4cd16ee4c7704e413c Signed-off-by: Hwankyu Jhun --- src/common.c | 9 ++++----- src/debug-launchpad.c | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/common.c b/src/common.c index 7ff591a..ff3f6ee 100644 --- a/src/common.c +++ b/src/common.c @@ -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; diff --git a/src/debug-launchpad.c b/src/debug-launchpad.c index bbe7b60..ed5d636 100644 --- a/src/debug-launchpad.c +++ b/src/debug-launchpad.c @@ -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) -- 2.7.4