[Ttssh2-commit] [7384] 98クラッシュ対策、ToTchar()系関数の実体をなくした

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2019年 1月 10日 (木) 23:06:21 JST


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


Ttssh2-commit メーリングリストの案内
Back to archive index