From: Jiyong Min Date: Tue, 19 Jun 2018 23:06:13 +0000 (+0900) Subject: Bug fix. 'mc_client_foreach_server_subscribed' return incorrectly changed server_name X-Git-Tag: submit/tizen_4.0/20180620.012106^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=61b3145aea9e5cbedaa44826e46c4a90a75d0390;p=platform%2Fcore%2Fapi%2Fmedia-controller.git Bug fix. 'mc_client_foreach_server_subscribed' return incorrectly changed server_name Change-Id: Iba14d810882197609fd0b4cffe605c5d270078a6 --- diff --git a/packaging/capi-media-controller.spec b/packaging/capi-media-controller.spec index 1d6fca2..c4d2a76 100755 --- a/packaging/capi-media-controller.spec +++ b/packaging/capi-media-controller.spec @@ -1,6 +1,6 @@ Name: capi-media-controller Summary: A media controller library in Tizen Native API -Version: 0.1.54 +Version: 0.1.55 Release: 1 Group: Multimedia/API License: Apache-2.0 diff --git a/src/media_controller_client.c b/src/media_controller_client.c index 1d68146..0ea44de 100755 --- a/src/media_controller_client.c +++ b/src/media_controller_client.c @@ -273,8 +273,16 @@ static int __mc_client_register_filter_listener(media_controller_client_s *mc_cl mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Fail mc_util_make_filter_interface_name"); ret = mc_ipc_register_listener(&mc_client->listeners, mc_client->dconn, filter_interface_name, signal_name, callback, user_data); - if (ret == MEDIA_CONTROLLER_ERROR_NONE) - *filter_list = g_list_append(*filter_list, strdup(filter_interface_name)); + if (ret == MEDIA_CONTROLLER_ERROR_NONE) { + char *filter_data = (char *)g_strdup(server_name); + if (filter_data == NULL) { + mc_debug("memeory allocation failed"); + mc_ipc_unregister_listener(&mc_client->listeners, mc_client->dconn, filter_interface_name, signal_name); + MC_SAFE_FREE(filter_interface_name); + return MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY; + } + *filter_list = g_list_append(*filter_list, filter_data); + } MC_SAFE_FREE(filter_interface_name); @@ -319,7 +327,7 @@ static int __mc_client_unregister_filter_listener(media_controller_client_s *mc_ interface_name = g_list_nth_data(*filter_list, idx); if (MC_STRING_VALID(interface_name)) { - if (g_strcmp0(interface_name, filter_interface_name) == 0) { + if (g_strcmp0(interface_name, server_name) == 0) { mc_debug("Unset subscriber [%d][%s]", idx, interface_name); *filter_list = g_list_remove(*filter_list, interface_name); MC_SAFE_FREE(interface_name); @@ -355,16 +363,6 @@ static int __mc_client_unregister_filter_listener(media_controller_client_s *mc_ return ret; } -static int __mc_parse_server_name(const char *interface_name, char **server_name) -{ - mc_retvm_if(interface_name == NULL, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "interface_name is NULL"); - mc_retvm_if(server_name == NULL, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "server_name is NULL"); - - *server_name = strdup(interface_name + strlen(MC_DBUS_UPDATE_INTERFACE) + 1); - - return MEDIA_CONTROLLER_ERROR_NONE; -} - static int __mc_client_send_command(mc_client_h client, const char *server_name, const char *command_type, const char *command, const char *signal_name, const char *message, char **request_id) { int ret = MEDIA_CONTROLLER_ERROR_NONE; @@ -752,7 +750,6 @@ int mc_client_foreach_server_subscribed(mc_client_h client, const mc_subscriptio int idx = 0; char *server_name = NULL; GList *filter_list = NULL; - char *filter_data = NULL; int filter_cnt = 0; mc_retvm_if(mc_client == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); @@ -787,17 +784,13 @@ int mc_client_foreach_server_subscribed(mc_client_h client, const mc_subscriptio filter_cnt = g_list_length(filter_list); for (idx = 0; idx < filter_cnt; idx++) { - filter_data = (char*)g_list_nth_data(filter_list, idx); - ret = __mc_parse_server_name(filter_data, &server_name); - mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail __mc_parse_server_name"); - + server_name = g_strdup((char*)g_list_nth_data(filter_list, idx)); if (MC_STRING_VALID(server_name)) { if (callback(server_name, user_data) == false) { MC_SAFE_FREE(server_name); break; } } - MC_SAFE_FREE(server_name); }