From: wn.jang Date: Fri, 3 Dec 2021 01:25:02 +0000 (+0900) Subject: Add mutex on tts_config_info for thread safety X-Git-Tag: submit/tizen_6.5/20211208.023642~3^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3e7c665946a6ed6c8e9fe65c76e26eb3ce9d22c6;p=platform%2Fcore%2Fuifw%2Ftts.git Add mutex on tts_config_info for thread safety Change-Id: Ia4b9a35c2c15aeb6a419892a9bde072f9455afad --- diff --git a/common/tts_config_parser.c b/common/tts_config_parser.c index 87604cd6..ea396e91 100644 --- a/common/tts_config_parser.c +++ b/common/tts_config_parser.c @@ -53,6 +53,8 @@ char g_language[128] = {0,}; static tts_config_s* g_config_info = NULL; +static pthread_mutex_t g_config_info_mutex = PTHREAD_MUTEX_INITIALIZER; + int tts_parser_get_engine_info(const char* path, tts_engine_info_s** engine_info) { if (NULL == path || NULL == engine_info) { @@ -574,14 +576,15 @@ int tts_parser_unload_config(void) xmlFreeDoc(g_config_doc); g_config_doc = NULL; } + pthread_mutex_lock(&g_config_info_mutex); if (NULL != g_config_info) { SLOG(LOG_ERROR, TAG_TTSCONFIG, "[DEBUG] Free config_info(%p)", g_config_info); free(g_config_info); g_config_info = NULL; } + pthread_mutex_unlock(&g_config_info_mutex); xmlCleanupParser(); - return 0; } @@ -592,11 +595,13 @@ int tts_parser_set_config_info(tts_config_s* config_info) SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] config_info is NULL"); return -1; } + pthread_mutex_lock(&g_config_info_mutex); if (NULL == g_config_info) { SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] g_config_info is NULL"); return -1; } memcpy(g_config_info, config_info, sizeof(tts_config_s)); + pthread_mutex_unlock(&g_config_info_mutex); return 0; } @@ -607,11 +612,13 @@ int tts_parser_get_config_info(tts_config_s* config_info) SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] config_info is NULL"); return -1; } + pthread_mutex_lock(&g_config_info_mutex); if (NULL == g_config_info) { SLOG(LOG_ERROR, TAG_TTSCONFIG, "[ERROR] g_config_info is NULL"); return -1; } memcpy(config_info, g_config_info, sizeof(tts_config_s)); + pthread_mutex_unlock(&g_config_info_mutex); return 0; }