FUNC_ENTRY;
int result = UAM_ERROR_NONE;
gint timeout;
- GDBusProxy *proxy;
- GVariant *ret;
- GVariant *param1;
- GVariant *param2;
- GVariant *param3;
- GVariant *param4;
- GVariant *input_param;
- GVariant *result_param;
+ GDBusProxy *proxy = NULL;
+ GVariant *ret = NULL;
+ GVariant *param1 = NULL;
+ GVariant *param2 = NULL;
+ GVariant *param3 = NULL;
+ GVariant *param4 = NULL;
+
+ GVariant *input_param = NULL;
+ GVariant *result_param = NULL;
GError *error = NULL;
UAM_INFO_C("Request function : %s (0x%x)",
input_param = g_variant_new("(i@ay@ay@ay@ay)", req_func, param1,
param2, param3, param4);
- g_variant_unref(param1);
- g_variant_unref(param2);
- g_variant_unref(param3);
- g_variant_unref(param4);
-
ret = g_dbus_proxy_call_sync(proxy, "uam_request",
input_param, G_DBUS_CALL_FLAGS_NONE, timeout,
NULL, &error);
+ /*
+ * Note: params1~4 and in_params are unreferenced within the g_dbus_proxy_call_sync function.
+ *
+ * ------------------------------------------------------------------------------
+ * Call flow:
+ * g_dbus_proxy_call_sync_internal -> g_dbus_connection_call_sync ->
+ * g_dbus_connection_call_sync_internal -> g_dbus_message_set_body ->
+ * g_variant_unref(message->body);
+ * ------------------------------------------------------------------------------
+ */
if (!ret) {
UAM_ERR("dBUS-RPC failed");
if (error != NULL) {
out_param = g_array_new(TRUE, TRUE, sizeof(gchar));
__uam_fill_garray_from_variant(param1, out_param);
g_variant_unref(param1);
+ g_array_unref(out_param);
}
/* Callback should be invoked only in case of failure */
done:
if (out_param)
- g_array_free(out_param, TRUE);
+ g_array_unref(out_param);
if (req_info) {
pending_requests = g_slist_remove(
uam_req_info_t *req_info;
gint timeout = -1;
GDBusProxy *proxy;
- GVariant *param1;
- GVariant *param2;
- GVariant *param3;
- GVariant *param4;
- GVariant *input_param;
+ GVariant *param1 = NULL;
+ GVariant *param2 = NULL;
+ GVariant *param3 = NULL;
+ GVariant *param4 = NULL;
+ GVariant *input_param = NULL;
UAM_INFO_C("Request function : %s (0x%x)",
_uam_request_to_str(req_func), req_func);
input_param = g_variant_new("(i@ay@ay@ay@ay)", req_func, param1,
param2, param3, param4);
- g_variant_unref(param1);
- g_variant_unref(param2);
- g_variant_unref(param3);
- g_variant_unref(param4);
-
g_dbus_proxy_call(proxy, "uam_request",
input_param,
G_DBUS_CALL_FLAGS_NONE,
timeout, NULL,
__uam_async_request_cb, req_info);
+ /*
+ * Note: In_params is unreferenced within the g_dbus_proxy_call_sync function.
+ *
+ * ------------------------------------------------------------------------------
+ * Call flow:
+ * g_dbus_proxy_call_sync_internal -> g_dbus_connection_call_sync ->
+ * g_dbus_connection_call_sync_internal -> g_dbus_message_set_body ->
+ * g_variant_unref(message->body);
+ * ------------------------------------------------------------------------------
+ */
pending_requests = g_slist_append(pending_requests, req_info);
FUNC_EXIT;
return result;
-}
+}
\ No newline at end of file