From: Wonnam Jang Date: Thu, 2 Jun 2016 12:33:07 +0000 (+0900) Subject: Fix bug for get private data X-Git-Tag: accepted/tizen/common/20160609.150309~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F21%2F72821%2F3;p=platform%2Fcore%2Fuifw%2Ftts.git Fix bug for get private data Change-Id: Ie64e4f1dda5f8b04702e497b238591e260e3aca1 Signed-off-by: Wonnam Jang --- diff --git a/client/tts_dbus.c b/client/tts_dbus.c index 3917196..dc7c755 100644 --- a/client/tts_dbus.c +++ b/client/tts_dbus.c @@ -660,8 +660,6 @@ int tts_dbus_request_get_private_data(int uid, const char* key, char** data) SLOG(LOG_DEBUG, TAG_TTSC, "<<<< tts get private data : result(%d)", result); if (NULL != temp) { *data = strdup(temp); - free(temp); - temp = NULL; } } else { SLOG(LOG_ERROR, TAG_TTSC, "<<<< tts get private data : result(%d)", result); diff --git a/include/tts.h b/include/tts.h index ac56cf2..6d0dc9f 100644 --- a/include/tts.h +++ b/include/tts.h @@ -417,6 +417,8 @@ int tts_set_private_data(tts_h tts, const char* key, const char* data); * @brief Gets the private data from tts engine. * @since_tizen 3.0 * + * @remarks data must be released using free() when it is no longer required. + * * @param[in] tts The TTS handle * @param[in] key The field name of private data * @param[out] data The data diff --git a/server/ttsd_dbus_server.c b/server/ttsd_dbus_server.c index 5a91bd3..c774b5a 100644 --- a/server/ttsd_dbus_server.c +++ b/server/ttsd_dbus_server.c @@ -609,5 +609,7 @@ int ttsd_dbus_server_get_private_data(DBusConnection* conn, DBusMessage* msg) SLOG(LOG_DEBUG, get_tag(), "<<<<<"); SLOG(LOG_DEBUG, get_tag(), ""); + if (NULL != data) free(data); + return 0; } diff --git a/server/ttsd_engine_agent.c b/server/ttsd_engine_agent.c index 2727cc8..8af7964 100644 --- a/server/ttsd_engine_agent.c +++ b/server/ttsd_engine_agent.c @@ -1647,12 +1647,15 @@ int ttsd_engine_get_private_data(const char* key, char** data) return TTSD_ERROR_NOT_SUPPORTED_FEATURE; } + char* temp = NULL; int ret = 0; - ret = g_cur_engine.pefuncs->get_private_data(key, data); + ret = g_cur_engine.pefuncs->get_private_data(key, &temp); if (0 != ret) { SLOG(LOG_ERROR, get_tag(), "[Engine Agent ERROR] Fail to get private data(%d)", ret); } + *data = strdup(temp); + return ret; }