From ca38a860ade6d2fcdd8bd42f7cf1accff8a3dfea Mon Sep 17 00:00:00 2001 From: Wonnam Jang Date: Thu, 2 Jun 2016 21:33:07 +0900 Subject: [PATCH] Fix bug for get private data Change-Id: Ie64e4f1dda5f8b04702e497b238591e260e3aca1 Signed-off-by: Wonnam Jang --- client/tts_dbus.c | 2 -- include/tts.h | 2 ++ server/ttsd_dbus_server.c | 2 ++ server/ttsd_engine_agent.c | 5 ++++- 4 files changed, 8 insertions(+), 3 deletions(-) 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; } -- 2.7.4