Resolve the memory leak issue 18/231618/1 accepted/tizen/5.5/unified/20200423.232614 submit/tizen_5.5/20200423.064158
authorYoungHun Kim <yh8004.kim@samsung.com>
Thu, 16 Apr 2020 04:42:20 +0000 (13:42 +0900)
committerYoungHun Kim <yh8004.kim@samsung.com>
Thu, 23 Apr 2020 05:08:30 +0000 (05:08 +0000)
Change-Id: I51188f64a0ed8b96cc0a8689d6c89b02525ecdf7
(cherry picked from commit 9fa75cbea4df6db1ac7b4acca521e1e12bd0e13d)

packaging/mm-resource-manager.spec
src/daemon/backend/murphy/mm_resource_manager_mloop.c
src/daemon/mm_resource_manager_daemon_dbus.c
src/daemon/mm_resource_manager_daemon_priv.c

index b241ca0..2f707ef 100644 (file)
@@ -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
index e61f04b..fdfce0c 100644 (file)
@@ -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);
 
index a89fe89..cc57b04 100755 (executable)
@@ -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);
 
index 26b9d29..fbd11bf 100644 (file)
@@ -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;