Change the way to convert wchar_t* to char* in CopyToCharArrayN()
[platform/framework/native/appfw.git] / src / base / utility / FBaseUtil_IcuConverter.cpp
index 38c4aa7..b833c17 100644 (file)
@@ -208,20 +208,25 @@ ConvertWcsToMbsN(const wchar_t* pValue)
        SysTryReturn(NID_BASE_UTIL, pValue != null, null, E_INVALID_ARG, "[%s] Invalid argument is used. The pValue is null.", GetErrorMessage(E_INVALID_ARG));
 
        int len = wcslen(pValue);
-       SysTryReturn(NID_BASE_UTIL, len != 0, null, E_INVALID_ARG, "[%s] Invalid argument is used. The pValue is an empty string.", GetErrorMessage(E_INVALID_ARG));
+       if (len == 0)
+       {
+               char* pRet = new (std::nothrow) char[1];
+               SysTryReturn(NID_BASE_UTIL, pRet != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+               pRet[0] = '\0';
+               return pRet;
+       }
 
        UErrorCode err = U_ZERO_ERROR;
        UConverter* pConverter = ucnv_open("UTF-8", &err);
 
-       result r = _ICUConverter::GetResultFromIcuErrorCode(err);
-       SysTryReturn(NID_BASE_UTIL, r == E_SUCCESS, null, r, "[%s] The err must be U_ZERO_ERROR.", GetErrorMessage(r));
+       SysTryReturn(NID_BASE_UTIL, err == U_ZERO_ERROR, null, E_INVALID_ARG, "[%s] ucnv_open() failed. The err must be U_ZERO_ERROR.", GetErrorMessage(E_INVALID_ARG));
 
        ucnv_setFromUCallBack(pConverter, UCNV_FROM_U_CALLBACK_STOP, null, null, null, &err);
 
        int icuStrLen = len * 2;
        UChar* pIcuStr = new (std::nothrow) UChar[icuStrLen];
        SysTryReturn(NID_BASE_UTIL, pIcuStr != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
-       
+
        int outLen = 0;
        UChar* pResultStr = u_strFromWCS(pIcuStr, icuStrLen, &outLen, pValue, len, &err);
 
@@ -231,69 +236,22 @@ ConvertWcsToMbsN(const wchar_t* pValue)
                char* pTmpOut = null;
                int outBytesLeftOut = len * 4;
                pOutBuf = new (std::nothrow) char[outBytesLeftOut + 1];
-               SysTryCatch(NID_BASE_UTIL, pOutBuf != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+               SysTryCatch(NID_BASE_UTIL, pOutBuf != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
 
                pTmpOut = pOutBuf;
                memset(pOutBuf, 0, outBytesLeftOut + 1);
                int retLength = ucnv_fromUChars(pConverter, pTmpOut, outBytesLeftOut, pResultStr, outLen, &err);
-               
-               r = _ICUConverter::GetResultFromIcuErrorCode(err);
-               if (IsFailed(r))
+
+               if (U_FAILURE(err))
                {
+                       SysLogException(NID_BASE_UTIL, E_INVALID_ARG, "[%s] ucnv_fromUChars() failed. pTmpOut is %s.", GetErrorMessage(E_INVALID_ARG), pTmpOut);
                        delete[] pOutBuf;
                        pOutBuf = null;
                }
        }
-
-CATCH:
-       if (pConverter)
-       {
-               ucnv_close(pConverter);
-               pConverter = null;
-       }
-       delete[] pIcuStr;
-       pIcuStr = null;
-       SetLastResult(r);
-       return pOutBuf;
-}
-
-wchar_t*
-ConvertMbsToWcsN(const char* pValue)
-{
-       int len = strlen(pValue);
-       SysTryReturn(NID_BASE_UTIL, len != 0, null, E_INVALID_ARG, "[%s] Invalid argument is used. The pValue is an empty string.", GetErrorMessage(E_INVALID_ARG));
-
-       UErrorCode err = U_ZERO_ERROR;
-       UConverter* pConverter = ucnv_open("UTF-8", &err);
-
-       result r = _ICUConverter::GetResultFromIcuErrorCode(err);
-       SysTryReturn(NID_BASE_UTIL, r == E_SUCCESS, null, r, "[%s] The err must be U_ZERO_ERROR.", GetErrorMessage(r));
-
-       ucnv_setFromUCallBack(pConverter, UCNV_FROM_U_CALLBACK_STOP, null, null, null, &err);
-
-       int icuStrLen = len + 1;
-       UChar* pIcuStr = new (std::nothrow) UChar[icuStrLen];
-       SysTryReturn(NID_BASE_UTIL, pIcuStr != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
-       memset(pIcuStr, 0, sizeof(UChar) * (icuStrLen));
-
-       const char* pTmpIn = pValue;
-       signed int retLength = ucnv_toUChars(pConverter, pIcuStr, icuStrLen, pTmpIn, len, &err);
-
-       wchar_t* pDst = null;
-       wchar_t* pResultStr = null;
-       if (U_SUCCESS(err))
+       else
        {
-               pDst = new (std::nothrow) wchar_t[retLength + 1];
-               SysTryCatch(NID_BASE_UTIL, pDst != null, , E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
-               memset(pDst, 0, sizeof(wchar_t) * (retLength + 1));
-               pResultStr = u_strToWCS(pDst, retLength, &retLength, pIcuStr, retLength, &err);
-               
-               r = _ICUConverter::GetResultFromIcuErrorCode(err);
-               if (IsFailed(r))
-               {
-                       delete[] pDst;
-                       pDst = null;
-               }
+               SysLogException(NID_BASE_UTIL, E_INVALID_ARG, "[%s] u_strFromWCS() failed. pValue is %ls.", GetErrorMessage(E_INVALID_ARG), pValue);
        }
 
 CATCH:
@@ -302,10 +260,8 @@ CATCH:
                ucnv_close(pConverter);
                pConverter = null;
        }
-       SetLastResult(r);
        delete[] pIcuStr;
        pIcuStr = null;
-       return pResultStr;
+       return pOutBuf;
 }
-
-} } } // Tizen::Base::Utility
+} } } // Tizen::Base::Utilityy