Revision: 7384 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/7384 Author: zmatsuo Date: 2019-01-10 23:06:21 +0900 (Thu, 10 Jan 2019) Log Message: ----------- 98クラッシュ対策、ToTchar()系関数の実体をなくした Modified Paths: -------------- trunk/teraterm/common/codeconv.cpp trunk/teraterm/common/codeconv.h -------------- next part -------------- Modified: trunk/teraterm/common/codeconv.cpp =================================================================== --- trunk/teraterm/common/codeconv.cpp 2019-01-09 10:50:34 UTC (rev 7383) +++ trunk/teraterm/common/codeconv.cpp 2019-01-10 14:06:21 UTC (rev 7384) @@ -91,8 +91,11 @@ */ wchar_t *_MultiByteToWideChar(const char *str_ptr, size_t str_len, int code_page, size_t *w_len_) { - const DWORD flags = MB_ERR_INVALID_CHARS; - wchar_t *wstr_ptr; + DWORD flags = MB_ERR_INVALID_CHARS; + if (code_page == CP_UTF8) { + // CP_UTF8 When this is set, dwFlags must be zero. + flags = 0; + } if (w_len_ != NULL) { *w_len_ = 0; } @@ -105,7 +108,7 @@ if (len == 0) { return NULL; } - wstr_ptr = (wchar_t *)malloc(len*sizeof(wchar_t)); + wchar_t *wstr_ptr = (wchar_t *)malloc(len*sizeof(wchar_t)); if (wstr_ptr == NULL) { return NULL; } @@ -122,13 +125,11 @@ return wstr_ptr; } -//#if defined(UNICODE) const char *ToCharW(const wchar_t *strW) { const char *strA = _WideCharToMultiByte(strW, 0, CP_ACP, NULL); return strA; } -//#endif const char *ToCharA(const char *strA) { @@ -138,40 +139,29 @@ const char *ToCharU8(const char *strU8) { const wchar_t *strW = _MultiByteToWideChar(strU8, 0, CP_UTF8, NULL); + if (strW == NULL) { + return NULL; + } const char *strA = _WideCharToMultiByte(strW, 0, CP_ACP, NULL); free((void *)strW); return strA; } -const TCHAR *ToTcharA(const char *strA) +const wchar_t *ToWcharA(const char *strA) { -#if defined(UNICODE) wchar_t *strW = _MultiByteToWideChar(strA, 0, CP_ACP, NULL); return strW; -#else - return ToCharA(strA); -#endif } -const TCHAR *ToTcharW(const wchar_t *strW) +const wchar_t *ToWcharW(const wchar_t *strW) { -#if defined(UNICODE) return _wcsdup(strW); -#else - return ToCharW(strW); -#endif } -const TCHAR *ToTcharU8(const char *strU8) +const wchar_t *ToWcharU8(const char *strU8) { const wchar_t *strW = _MultiByteToWideChar(strU8, 0, CP_UTF8, NULL); -#if defined(UNICODE) return strW; -#else - const char *strA = _WideCharToMultiByte(strW, 0, CP_ACP, NULL); - free((void *)strW); - return strA; -#endif } const char *ToU8W(const wchar_t *strW) Modified: trunk/teraterm/common/codeconv.h =================================================================== --- trunk/teraterm/common/codeconv.h 2019-01-09 10:50:34 UTC (rev 7383) +++ trunk/teraterm/common/codeconv.h 2019-01-10 14:06:21 UTC (rev 7384) @@ -37,22 +37,27 @@ char *_WideCharToMultiByte(const wchar_t *wstr_ptr, size_t wstr_len, int code_page, size_t *mb_len_); wchar_t *_MultiByteToWideChar(const char *str_ptr, size_t str_len, int code_page, size_t *w_len_); -const TCHAR *ToTcharA(const char *strA); -const TCHAR *ToTcharW(const wchar_t *strW); -const TCHAR *ToTcharU8(const char *strU8); const char *ToCharA(const char *strA); const char *ToCharW(const wchar_t *strW); const char *ToCharU8(const char *strU8); const wchar_t *ToWcharA(const char *strA); +const wchar_t *ToWcharW(const wchar_t *strW); +const wchar_t *ToWcharU8(const char *strU8); const char *ToU8A(const char *strA); const char *ToU8W(const wchar_t *strW); #if defined(_UNICODE) -#define ToCharT(s) ToCharW(s) -#define ToU8T(s) ToU8W(s) +#define ToTcharA(s) ToWcharA(s) +#define ToTcharW(s) ToWcharW(s) +#define ToTcharU8(s) ToWcharU8(s) +#define ToCharT(s) ToCharW(s) +#define ToU8T(s) ToU8W(s) #else -#define ToCharT(s) ToCharA(s) -#define ToU8T(s) ToU8A(s) +#define ToTcharA(s) ToCharA(s) +#define ToTcharW(s) ToCharW(s) +#define ToTcharU8(s) ToCharU8(s) +#define ToCharT(s) ToCharA(s) +#define ToU8T(s) ToU8A(s) #endif #ifdef __cplusplus @@ -60,13 +65,7 @@ #endif #ifdef __cplusplus -TCHAR *ToTchar(const char *strA); -TCHAR *ToTchar(const wchar_t *strW); -#endif - -#ifdef __cplusplus - #if defined(__GNUC__) || (defined(_MSC_VER) && (_MSC_VER > 1910)) #define MOVE_CONSTRUCTOR_ENABLE #endif