From 1d0dfd11913a0a91eae3f8a5d4167d7d8b015a2c Mon Sep 17 00:00:00 2001 From: YoungHun Kim Date: Thu, 16 Apr 2020 13:42:20 +0900 Subject: [PATCH] Resolve the memory leak issue Change-Id: I51188f64a0ed8b96cc0a8689d6c89b02525ecdf7 (cherry picked from commit 9fa75cbea4df6db1ac7b4acca521e1e12bd0e13d) --- packaging/mm-resource-manager.spec | 2 +- src/daemon/backend/murphy/mm_resource_manager_mloop.c | 4 +--- src/daemon/mm_resource_manager_daemon_dbus.c | 12 ++++++++---- src/daemon/mm_resource_manager_daemon_priv.c | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/packaging/mm-resource-manager.spec b/packaging/mm-resource-manager.spec index b241ca0..2f707ef 100644 --- a/packaging/mm-resource-manager.spec +++ b/packaging/mm-resource-manager.spec @@ -1,6 +1,6 @@ Name: mm-resource-manager Summary: A Multimedia Resource Manager API -Version: 0.2.24 +Version: 0.2.25 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/daemon/backend/murphy/mm_resource_manager_mloop.c b/src/daemon/backend/murphy/mm_resource_manager_mloop.c index e61f04b..fdfce0c 100644 --- a/src/daemon/backend/murphy/mm_resource_manager_mloop.c +++ b/src/daemon/backend/murphy/mm_resource_manager_mloop.c @@ -246,9 +246,7 @@ static gboolean __mm_resource_manager_mloop_list_resources(mrp_res_context_t *co static int __mm_resource_manager_mloop_wait_connection(mm_resource_manager_mloop_s *mrp) { - MM_RM_RETVM_IF(mrp == NULL, - MM_RESOURCE_MANAGER_ERROR_INVALID_PARAMETER, - "mainloop_s is null"); + MM_RM_RETVM_IF(mrp == NULL, MM_RESOURCE_MANAGER_ERROR_INVALID_PARAMETER, "mainloop_s is null"); g_mutex_lock(&mrp->lock); diff --git a/src/daemon/mm_resource_manager_daemon_dbus.c b/src/daemon/mm_resource_manager_daemon_dbus.c index a89fe89..cc57b04 100755 --- a/src/daemon/mm_resource_manager_daemon_dbus.c +++ b/src/daemon/mm_resource_manager_daemon_dbus.c @@ -200,9 +200,13 @@ int _mmrm_dmn_dbus_commit(mm_resource_manager_id id, GVariantIter *release, MM_RM_DEBUG("Commit acquire request of %"G_GSIZE_FORMAT" items [type %d]", acquire_len, type); - *is_acquired = (gboolean *) g_malloc0_n(acquire_len, sizeof(**is_acquired)); - ret = _mmrm_dmn_commit(id, release_requests, acquire_requests); + if (ret != MM_RESOURCE_MANAGER_ERROR_NONE) { + MM_RM_ERROR("dmm commit is failed"); + goto out; + } + + *is_acquired = (gboolean *) g_malloc0_n(acquire_len, sizeof(**is_acquired)); for (i = 0; acquire_requests[i].type != MM_RESOURCE_MANAGER_NO_RES; i++) (*is_acquired)[i] = acquire_requests[i].priority_error; @@ -340,7 +344,7 @@ static gboolean on_commit_handle(MMResourceManager *interface, GVariant *release, GVariant *acquire, gpointer user_data) { gint error = 0; - gboolean ret = TRUE, *flags; + gboolean ret = TRUE, *flags = NULL; GVariantBuilder *flags_builder; GVariantIter *release_array; GVariantIter *acquire_array; @@ -363,10 +367,10 @@ static gboolean on_commit_handle(MMResourceManager *interface, g_variant_builder_add_value(flags_builder, g_variant_new("b", flags[i])); mmresource_manager_complete_commit(interface, invocation, error, g_variant_builder_end(flags_builder)); - g_free(flags); g_variant_builder_unref(flags_builder); out: + g_free(flags); g_variant_iter_free(release_array); g_variant_iter_free(acquire_array); diff --git a/src/daemon/mm_resource_manager_daemon_priv.c b/src/daemon/mm_resource_manager_daemon_priv.c index 26b9d29..fbd11bf 100644 --- a/src/daemon/mm_resource_manager_daemon_priv.c +++ b/src/daemon/mm_resource_manager_daemon_priv.c @@ -508,7 +508,7 @@ static GArray *__handle_acquire_requests(mm_resource_manager_dmn_p manager, const char *res_name = NULL; GArray *cb_requests = NULL; GArray *res = NULL; - int i =0, j = 0; + int i = 0, j = 0; gboolean is_released_called_once = FALSE; mm_resource_manager_res_type_e type = MM_RESOURCE_MANAGER_RES_TYPE_MAX; mm_resource_manager_res_volume volume = MM_RESOURCE_MANAGER_RES_VOLUME_FULL; -- 2.7.4