[P170213-04010] Copy valid unicode string to main text of thread list 40/115140/1
authorKyeonghun Lee <kh9090.lee@samsung.com>
Thu, 16 Feb 2017 11:17:24 +0000 (20:17 +0900)
committerKyeonghun Lee <kh9090.lee@samsung.com>
Thu, 16 Feb 2017 11:24:18 +0000 (03:24 -0800)
Change-Id: I7da91aed47ec282cee01b18d613a1febfc6b1556
Signed-off-by: Kyeonghun Lee <kh9090.lee@samsung.com>
framework/storage-handler/MsgStorageMessage.cpp
utils/MsgUtilStorage.cpp

index 3198002..1f1dfff 100755 (executable)
@@ -2836,8 +2836,15 @@ msg_error_t MsgStoGetThreadInfo(msg_thread_id_t threadId, MSG_THREAD_VIEW_S *pTh
                memset(pThreadInfo->threadName, 0x00, sizeof(pThreadInfo->threadName));
                dbHandle->getColumnToString(index++, MAX_THREAD_NAME_LEN, pThreadInfo->threadName);
 
+               char tmpData[MAX_THREAD_DATA_LEN + 1] = {0};
+               dbHandle->getColumnToString(index++, MAX_THREAD_DATA_LEN, tmpData);
                memset(pThreadInfo->threadData, 0x00, sizeof(pThreadInfo->threadData));
-               dbHandle->getColumnToString(index++, MAX_THREAD_DATA_LEN, pThreadInfo->threadData);
+               char *end = NULL;
+               if (g_utf8_validate(tmpData, -1, (const gchar **)&end) == true) {
+                       g_utf8_strncpy(pThreadInfo->threadData, tmpData, g_utf8_strlen(tmpData, -1));
+               } else {
+                       g_utf8_strncpy(pThreadInfo->threadData, tmpData, g_utf8_strlen(tmpData, end - tmpData));
+               }
 
                pThreadInfo->bProtected = (dbHandle->getColumnToInt(index++) > 0) ? true : false;
                pThreadInfo->bDraft = dbHandle->getColumnToInt(index++);
index 111215f..9305c8c 100755 (executable)
@@ -1778,8 +1778,15 @@ msg_error_t MsgStoGetThreadViewList(const MSG_SORT_RULE_S *pSortRule, msg_struct
                memset(pTmp->threadName, 0x00, sizeof(pTmp->threadName));
                dbHandle->getColumnToString(index++, MAX_THREAD_NAME_LEN, pTmp->threadName);
 
+               char tmpData[MAX_THREAD_DATA_LEN + 1] = {0};
+               dbHandle->getColumnToString(index++, MAX_THREAD_DATA_LEN, tmpData);
                memset(pTmp->threadData, 0x00, sizeof(pTmp->threadData));
-               dbHandle->getColumnToString(index++, MAX_THREAD_DATA_LEN, pTmp->threadData);
+               char *end = NULL;
+               if (g_utf8_validate(tmpData, -1, (const gchar **)&end) == true) {
+                       g_utf8_strncpy(pTmp->threadData, tmpData, g_utf8_strlen(tmpData, -1));
+               } else {
+                       g_utf8_strncpy(pTmp->threadData, tmpData, g_utf8_strlen(tmpData, end - tmpData));
+               }
 
                pTmp->bProtected = (dbHandle->getColumnToInt(index++) > 0) ? true : false;
                pTmp->bDraft = dbHandle->getColumnToInt(index++);