From: Seungbae Shin Date: Wed, 28 Oct 2020 10:33:05 +0000 (+0900) Subject: Fix memory leaks caused by unhandling result of dbus method call X-Git-Tag: submit/tizen/20201029.032905^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F41%2F246341%2F1;p=platform%2Fcore%2Fapi%2Fsound-manager.git Fix memory leaks caused by unhandling result of dbus method call [Version] 0.6.30 [Issue Type] Bug Change-Id: I6a22ed4ceb6e8ad5f287579b9e6ada6605147125 --- diff --git a/packaging/capi-media-sound-manager.spec b/packaging/capi-media-sound-manager.spec index 67a949c..eeba2a7 100644 --- a/packaging/capi-media-sound-manager.spec +++ b/packaging/capi-media-sound-manager.spec @@ -1,6 +1,6 @@ Name: capi-media-sound-manager Summary: Sound Manager library -Version: 0.6.29 +Version: 0.6.30 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/sound_manager_private.c b/src/sound_manager_private.c index 48988c5..5cec52b 100644 --- a/src/sound_manager_private.c +++ b/src/sound_manager_private.c @@ -1696,6 +1696,7 @@ int _set_sample_format(int device_id, sound_sample_format_e format) { int ret = SOUND_MANAGER_ERROR_NONE; GDBusConnection *conn = NULL; + GVariant *result = NULL; GError *err = NULL; char *format_str = NULL; @@ -1705,7 +1706,7 @@ int _set_sample_format(int device_id, sound_sample_format_e format) if ((ret = _convert_sample_format_enum_to_str(format, &format_str)) != SOUND_MANAGER_ERROR_NONE) return ret; - g_dbus_connection_call_sync(conn, + result = g_dbus_connection_call_sync(conn, PA_BUS_NAME, PA_DEVICE_MANAGER_OBJECT_PATH, PA_DEVICE_MANAGER_INTERFACE, @@ -1718,10 +1719,13 @@ int _set_sample_format(int device_id, sound_sample_format_e format) &err); if (err) { LOGE("g_dbus_connection_call_sync() for SET_SAMPLE_FORMAT error (%s)", err->message); - ret = _convert_sound_manager_error_code(__func__, _convert_dbus_error(err ? err->message : NULL)); + ret = _convert_sound_manager_error_code(__func__, _convert_dbus_error(err->message)); g_error_free(err); } + if (result) + g_variant_unref(result); + g_object_unref(conn); return ret; @@ -1856,6 +1860,7 @@ int _set_sample_rate(int device_id, sound_sample_rate_e rate) { int ret = SOUND_MANAGER_ERROR_NONE; GDBusConnection *conn = NULL; + GVariant *result = NULL; GError *err = NULL; unsigned int _rate; @@ -1865,7 +1870,7 @@ int _set_sample_rate(int device_id, sound_sample_rate_e rate) if ((ret = _convert_sample_rate_enum_to_uint(rate, &_rate)) != SOUND_MANAGER_ERROR_NONE) return ret; - g_dbus_connection_call_sync(conn, + result = g_dbus_connection_call_sync(conn, PA_BUS_NAME, PA_DEVICE_MANAGER_OBJECT_PATH, PA_DEVICE_MANAGER_INTERFACE, @@ -1882,6 +1887,9 @@ int _set_sample_rate(int device_id, sound_sample_rate_e rate) g_error_free(err); } + if (result) + g_variant_unref(result); + g_object_unref(conn); return ret; @@ -1935,12 +1943,13 @@ int _set_avoid_resampling(int device_id, bool enable) { int ret = SOUND_MANAGER_ERROR_NONE; GDBusConnection *conn = NULL; + GVariant *result = NULL; GError *err = NULL; if ((ret = __get_dbus_connection(&conn)) != SOUND_MANAGER_ERROR_NONE) return ret; - g_dbus_connection_call_sync(conn, + result = g_dbus_connection_call_sync(conn, PA_BUS_NAME, PA_DEVICE_MANAGER_OBJECT_PATH, PA_DEVICE_MANAGER_INTERFACE, @@ -1957,6 +1966,9 @@ int _set_avoid_resampling(int device_id, bool enable) g_error_free(err); } + if (result) + g_variant_unref(result); + g_object_unref(conn); return ret; @@ -2011,6 +2023,7 @@ int _set_media_stream_only(int device_id, bool enable) { int ret = SOUND_MANAGER_ERROR_NONE; GDBusConnection *conn = NULL; + GVariant *result = NULL; GError *err = NULL; const char *stream_type; @@ -2022,7 +2035,7 @@ int _set_media_stream_only(int device_id, bool enable) else stream_type = "none"; - g_dbus_connection_call_sync(conn, + result = g_dbus_connection_call_sync(conn, PA_BUS_NAME, PA_DEVICE_MANAGER_OBJECT_PATH, PA_DEVICE_MANAGER_INTERFACE, @@ -2039,6 +2052,9 @@ int _set_media_stream_only(int device_id, bool enable) g_error_free(err); } + if (result) + g_variant_unref(result); + g_object_unref(conn); return ret; @@ -3182,7 +3198,6 @@ int _activate_ducking(uint32_t stream_index, bool enable, const char *target_str } g_variant_get(result, "(&s)", &dbus_ret); - if (!strncmp("STREAM_MANAGER_RETURN_ERROR_INVALID_STATE", dbus_ret, strlen(dbus_ret))) ret = SOUND_MANAGER_ERROR_INVALID_STATE; else if (strncmp("STREAM_MANAGER_RETURN_OK", dbus_ret, strlen(dbus_ret)))