{\r
UTF8Length--;\r
UTF16Length = MultiByteToWideChar(CP_UTF8, 0, pUTF8, UTF8Length, pUTF16, UTF16Length);\r
- SJISLength = NewSJISLength;\r
NewSJISLength = WideCharToMultiByte(CP_ACP, 0, pUTF16, UTF16Length, NULL, 0, NULL, NULL);\r
}\r
free(pUTF16);\r
// UTF-16 LE変換した時に文字数が増減する位置がUTF-8の区切り\r
- NewUTF16Length = UTF16Length;\r
- while(UTF8Length > 0 && NewUTF16Length >= UTF16Length)\r
- {\r
- UTF8Length--;\r
- UTF16Length = NewUTF16Length;\r
- NewUTF16Length = MultiByteToWideChar(CP_UTF8, 0, pUTF8, UTF8Length, NULL, 0);\r
- }\r
if(pNewUTF8Length)\r
{\r
+ NewUTF16Length = UTF16Length;\r
+ while(UTF8Length > 0 && NewUTF16Length >= UTF16Length)\r
+ {\r
+ UTF8Length--;\r
+ NewUTF16Length = MultiByteToWideChar(CP_UTF8, 0, pUTF8, UTF8Length, NULL, 0);\r
+ }\r
if(UTF16Length > 0)\r
UTF8Length++;\r
*pNewUTF8Length = UTF8Length;\r
SrcLength = SrcLength / 2;\r
}\r
}\r
- // UTF-8の場合、不完全な文字は常に変換されない\r
UTF16Length = MultiByteToWideChar(CP_UTF8, 0, pSrc, SrcLength, NULL, 0);\r
\r
// サイズ0 or バッファサイズより大きい場合は\r
#define HAVE_OPENVMS\r
\r
// 全体に影響する設定はここに記述する予定\r
-// 内部をUTF-8として扱いマルチバイト文字ワイド文字APIラッパーを使用する\r
-#include "mbswrapper.h"\r
-// OpenSSL用ソケットラッパーを使用する\r
-#include "socketwrapper.h"\r
-// プロセスをDLL Injectionから保護する\r
-#include "protectprocess.h"\r
// 使用するCPUを1個に限定する(マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策)\r
//#define DISABLE_MULTI_CPUS\r
// ファイル転送用のネットワークバッファを無効にする(通信中止後にリモートのディレクトリが表示されないバグ対策)\r
/* HP NonStop Server 用のコードを有効にする */\r
#define HAVE_TANDEM\r
\r
+// 内部をUTF-8として扱いマルチバイト文字ワイド文字APIラッパーを使用する\r
+#include "mbswrapper.h"\r
+// OpenSSL用ソケットラッパーを使用する\r
+#include "socketwrapper.h"\r
+// プロセスをDLL Injectionから保護する\r
+#include "protectprocess.h"\r
+\r
LPCSTR pMultiLimit;\r
LPWSTR pWideLimit;\r
DWORD Code;\r
+ int TempCount;\r
WCHAR Temp[8];\r
if(CodePage != CP_UTF8 || dwFlags != 0)\r
return MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, lpWideCharStr, cchWideChar);\r
continue;\r
if(lpWideCharStr)\r
{\r
- WideCount += PutNextCharW(lpWideCharStr, pWideLimit, &lpWideCharStr, Code);\r
- if(lpWideCharStr >= pWideLimit)\r
+ TempCount = PutNextCharW(lpWideCharStr, pWideLimit, &lpWideCharStr, Code);\r
+ WideCount += TempCount;\r
+ if(TempCount == 0 && lpWideCharStr >= pWideLimit)\r
{\r
WideCount = 0;\r
break;\r
LPCWSTR pWideLimit;\r
LPSTR pMultiLimit;\r
DWORD Code;\r
+ int TempCount;\r
CHAR Temp[8];\r
if(CodePage != CP_UTF8 || dwFlags != 0)\r
return WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, lpMultiByteStr, cbMultiByte, lpDefaultChar, lpUsedDefaultChar);\r
continue;\r
if(lpMultiByteStr)\r
{\r
- MultiCount += PutNextCharM(lpMultiByteStr, pMultiLimit, &lpMultiByteStr, Code);\r
- if(lpMultiByteStr >= pMultiLimit)\r
+ TempCount = PutNextCharM(lpMultiByteStr, pMultiLimit, &lpMultiByteStr, Code);\r
+ MultiCount += TempCount;\r
+ if(TempCount == 0 && lpMultiByteStr >= pMultiLimit)\r
{\r
MultiCount = 0;\r
break;\r