From 1d34f6e968704f436a3f87ff594f2ec67f4b31a8 Mon Sep 17 00:00:00 2001 From: DoHyun Pyun Date: Fri, 3 Apr 2020 09:35:25 +0900 Subject: [PATCH 1/1] Fix the memory leak in app battery info Change-Id: I7feadb193a18bbaa932d7e48f0373715d4eef78e Signed-off-by: DoHyun Pyun --- bt-service-adaptation/services/bt-request-handler.c | 2 +- bt-service-adaptation/services/bt-service-battery-monitor.c | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/bt-service-adaptation/services/bt-request-handler.c b/bt-service-adaptation/services/bt-request-handler.c index d36d751..e870bf2 100644 --- a/bt-service-adaptation/services/bt-request-handler.c +++ b/bt-service-adaptation/services/bt-request-handler.c @@ -513,7 +513,7 @@ int __bt_bluez_request(int function_name, } dbus_data.num_app = n; g_array_append_vals(*out_param1, &dbus_data, sizeof(bt_battery_dbus_data_t)); - g_slist_free(data->atm_list); + g_slist_free_full(data->atm_list, g_free); g_free(data); data = NULL; break; diff --git a/bt-service-adaptation/services/bt-service-battery-monitor.c b/bt-service-adaptation/services/bt-service-battery-monitor.c index 5133774..4fe89b3 100644 --- a/bt-service-adaptation/services/bt-service-battery-monitor.c +++ b/bt-service-adaptation/services/bt-service-battery-monitor.c @@ -148,11 +148,9 @@ int _bt_bm_read_data(_bt_battery_data_t *data) gettimeofday(&app_scan_base, 0); - data->atm_list = current_session_data->atm_list; - if (data->atm_list == NULL) { - BT_DBG("No data transaction in this session"); - return BLUETOOTH_ERROR_NONE; - } + /* Note that this is a "shallow" copy. The pointers are copied but the actual data isn't. */ + data->atm_list = g_slist_copy(current_session_data->atm_list); + current_session_data->atm_list = NULL; BT_DBG("App-wise data transaction details"); for (GSList *l = data->atm_list; l != NULL; l = g_slist_next(l)) { @@ -160,7 +158,6 @@ int _bt_bm_read_data(_bt_battery_data_t *data) BT_DBG("%ld %ld %d %d %u", (long int)(t->uid), (long int)(t->pid), t->rx_bytes, t->tx_bytes, t->time); } - current_session_data->atm_list = NULL; return BLUETOOTH_ERROR_NONE; } @@ -542,7 +539,7 @@ static void __bt_notify_battery_data(void) BLUETOOTH_EVENT_DISABLED_BATTERY_DATA, param); - g_slist_free(data->atm_list); + g_slist_free_full(data->atm_list, g_free); g_free(data); g_array_free(info, TRUE); BT_INFO("-"); -- 2.7.4