From 187d0bb790093f2eafa02c02dbd9a6eb68f82de8 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Fri, 27 Dec 2019 21:46:13 +0900 Subject: [PATCH] Fix memory leaks Change-Id: Idc0f49c7965593b9e2d2b2de358adc17fed609e5 Signed-off-by: Jaehyun Kim --- src/network_internal.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/network_internal.c b/src/network_internal.c index 1e0bd17..f7071b8 100755 --- a/src/network_internal.c +++ b/src/network_internal.c @@ -350,6 +350,22 @@ int _net_open_connection_with_wifi_info(const net_wifi_connection_info_s* wifi_i return Error; } +static void __net_client_clear_cb_data(net_event_info_s *client) +{ + if (client && client->Datalength > 0) { + if (client->Event == NET_EVENT_WIFI_SPECIFIC_SCAN_IND || + client->Event == NET_EVENT_WIFI_BSSID_SCAN_IND || + client->Event == NET_EVENT_WIFI_NETLINK_SCAN_IND) { + GSList *bss_info_list = client->Data; + + if (bss_info_list != NULL) + g_slist_free_full(bss_info_list, g_free); + } + g_free(client->Data); + } + g_free(client); +} + static gboolean __net_client_cb_wifi_idle(gpointer data) { net_event_info_s *event_data = (net_event_info_s *)data; @@ -357,10 +373,7 @@ static gboolean __net_client_cb_wifi_idle(gpointer data) if (NetworkInfo.ClientEventCb_wifi != NULL) NetworkInfo.ClientEventCb_wifi(event_data, NetworkInfo.user_data_wifi); - if (event_data->Datalength > 0) - g_free(event_data->Data); - - g_free(event_data); + __net_client_clear_cb_data(event_data); return FALSE; } @@ -414,12 +427,8 @@ void _net_client_callback(net_event_info_s *event_data) } id = _net_client_callback_add(__net_client_cb_wifi_idle, (gpointer)client); - if (!id) { - if (client->Datalength > 0) - g_free(client->Data); - - g_free(client); - } + if (!id) + __net_client_clear_cb_data(client); } __NETWORK_FUNC_EXIT__; @@ -540,6 +549,7 @@ void _net_client_callback_cleanup(void) src = g_main_context_find_source_by_id(g_main_context_default(), data->id); if (src) { + __net_client_clear_cb_data((net_event_info_s *)data->user_data); g_source_destroy(src); cur = managed_idler_list; } else -- 2.7.4