https://git.reactos.org/?p=reactos.git;a=commitdiff;h=581757d8618c828c0ebba…
commit 581757d8618c828c0ebbad479f10a625226c7e5c
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Fri Dec 10 12:24:41 2021 +0900
Commit: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
CommitDate: Fri Dec 10 12:24:41 2021 +0900
[KERNEL32_APITEST] Improve MultiByteToWideChar testcase
- Fix WinXP and ReactOS cases.
CORE-13349
NOTE: We use Win10's MultiByteToWideChar behaviour due to security reason.
---
dll/win32/kernel32/winnls/string/nls.c | 4 +-
.../apitests/kernel32/MultiByteToWideChar.c | 66 +++++++++++-----------
2 files changed, 36 insertions(+), 34 deletions(-)
diff --git a/dll/win32/kernel32/winnls/string/nls.c
b/dll/win32/kernel32/winnls/string/nls.c
index 7264fa73cae..a1bad1b2271 100644
--- a/dll/win32/kernel32/winnls/string/nls.c
+++ b/dll/win32/kernel32/winnls/string/nls.c
@@ -356,9 +356,10 @@ IntGetCodePageEntry(UINT CodePage)
*
* Internal version of MultiByteToWideChar for UTF8.
*
+ * @note We use Win10's behaviour due to security reason.
+ *
* @see MultiByteToWideChar
*/
-
static
INT
WINAPI
@@ -1633,7 +1634,6 @@ static INT Utf7ToWideChar(const char *src, int srclen, WCHAR *dst,
int dstlen)
*
* @implemented
*/
-
INT
WINAPI
MultiByteToWideChar(UINT CodePage,
diff --git a/modules/rostests/apitests/kernel32/MultiByteToWideChar.c
b/modules/rostests/apitests/kernel32/MultiByteToWideChar.c
index d0dbf864110..71fbd68d92a 100644
--- a/modules/rostests/apitests/kernel32/MultiByteToWideChar.c
+++ b/modules/rostests/apitests/kernel32/MultiByteToWideChar.c
@@ -7,12 +7,10 @@
*/
#include "precomp.h"
+#include <versionhelpers.h>
static ULONG OsVersion;
-/* NOTE: Tested on Win10. We follow Win10 in this function.
- Win10 might alter its design in future. */
-
/* TODO: Russian, French, Korean etc. codepages */
#define CP932 932 /* Japanese Shift_JIS (SJIS) codepage */
@@ -126,7 +124,7 @@ static const ENTRY Entries[] =
{ __LINE__, {0x600,0xA00}, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8,
MB_ERR_INVALID_CHARS, "\xC0\xC0\x80", 4, 1, {0xFFFD, 0x7F7F}, 2 },
{ __LINE__, {0x000,0x502}, 0, ERROR_NO_UNICODE_TRANSLATION, CP_UTF8,
MB_ERR_INVALID_CHARS, "\xE0\xC0", 3, 1, {0x7F7F, 0x7F7F}, 2 },
{ __LINE__, {0x600,0xA00}, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8,
MB_ERR_INVALID_CHARS, "\xE0\xC0", 3, 1, {0xFFFD, 0x7F7F}, 2 },
- { __LINE__, {0x000,0x502}, 0, ERROR_NO_UNICODE_TRANSLATION, CP_UTF8,
MB_ERR_INVALID_CHARS, "\xE0\x20\xC0", 4, 1, {0x0020, 0x7F7F}, 2 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_NO_UNICODE_TRANSLATION, CP_UTF8,
MB_ERR_INVALID_CHARS, "\xE0\x20\xC0", 4, 1, {0x0020, 0x7F7F}, 2 },
{ __LINE__, {0x600,0xA00}, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8,
MB_ERR_INVALID_CHARS, "\xE0\x20\xC0", 4, 1, {0xFFFD, 0x7F7F}, 2 },
{ __LINE__, {0x000,0x502}, 0, ERROR_NO_UNICODE_TRANSLATION, CP_UTF8,
MB_ERR_INVALID_CHARS, "\x82\xA0\x82\xA2", -1, 1, {0x7F7F, 0x7F7F}, 2 },
{ __LINE__, {0x600,0xA00}, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8,
MB_ERR_INVALID_CHARS, "\x82\xA0\x82\xA2", -1, 1, {0xFFFD, 0x7F7F}, 2 },
@@ -142,9 +140,9 @@ static const ENTRY Entries[] =
{ __LINE__, {0x000,0xA00}, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 0, UTF8_Japanese,
sizeof(UTF8_Japanese), 1, {0x65E5, 0x7F7F}, 2 },
{ __LINE__, {0x000,0xA00}, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8,
MB_ERR_INVALID_CHARS, UTF8_Japanese, sizeof(UTF8_Japanese), 1, {0x65E5, 0x7F7F}, 2 },
/* Japanese UTF-8 truncated source */
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, UTF8_Japanese, 1, 4,
{0x7F7F, 0x7F7F}, 2 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0, UTF8_Japanese, 1, 4,
{0x7F7F, 0x7F7F}, 2 },
{ __LINE__, {0x600,0xA00}, 1, 0xBEAF, CP_UTF8, 0, UTF8_Japanese, 1, 4, {0xFFFD,
0x7F7F}, 2 },
- { __LINE__, {0x000,0x502}, 0, ERROR_NO_UNICODE_TRANSLATION, CP_UTF8,
MB_ERR_INVALID_CHARS, UTF8_Japanese, 1, 4, {0x7F7F, 0x7F7F}, 2 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_NO_UNICODE_TRANSLATION, CP_UTF8,
MB_ERR_INVALID_CHARS, UTF8_Japanese, 1, 4, {0x7F7F, 0x7F7F}, 2 },
{ __LINE__, {0x600,0xA00}, 0, ERROR_NO_UNICODE_TRANSLATION, CP_UTF8,
MB_ERR_INVALID_CHARS, UTF8_Japanese, 1, 4, {0xFFFD, 0x7F7F}, 2 },
/* Japanese CP932 without buffer */
{ __LINE__, {0x000,0xA00}, 4, 0xBEAF, CP932, 0, SJIS_Japanese, sizeof(SJIS_Japanese)
},
@@ -160,66 +158,66 @@ static const ENTRY Entries[] =
{ __LINE__, {0x600,0xA00}, 1, 0xBEAF, CP932, 0, SJIS_Japanese, 1, 4, {0x30FB,
0x7F7F}, 2 },
{ __LINE__, {0x000,0xA00}, 0, ERROR_NO_UNICODE_TRANSLATION, CP932,
MB_ERR_INVALID_CHARS, SJIS_Japanese, 1, 4, {0x7F7F, 0x7F7F}, 2 },
/* invalid 5-byte UTF-8 sequences */
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xF8\xA3\xA3\xA3\xA3", 1, 8, {0x7F7F, 0x7F7F}, 2 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xF8\xA3\xA3\xA3\xA3", 1, 8, {0x7F7F, 0x7F7F}, 2 },
{ __LINE__, {0x600,0xA00}, 1, 0xBEAF, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3",
1, 8, {0xFFFD, 0x7F7F}, 2 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xF8\xA3\xA3\xA3\xA3", 2, 8, {0x7F7F, 0x7F7F, 0x7F7F}, 3 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xF8\xA3\xA3\xA3\xA3", 2, 8, {0x7F7F, 0x7F7F, 0x7F7F}, 3 },
{ __LINE__, {0x600,0xA00}, 2, 0xBEAF, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3",
2, 8, {0xFFFD, 0xFFFD, 0x7F7F}, 3 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xF8\xA3\xA3\xA3\xA3", 3, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 4 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xF8\xA3\xA3\xA3\xA3", 3, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 4 },
{ __LINE__, {0x600,0xA00}, 3, 0xBEAF, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3",
3, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 4 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xF8\xA3\xA3\xA3\xA3", 4, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 5 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xF8\xA3\xA3\xA3\xA3", 4, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 5 },
{ __LINE__, {0x600,0xA00}, 4, 0xBEAF, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3",
4, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 5 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xF8\xA3\xA3\xA3\xA3", 5, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F},
6 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xF8\xA3\xA3\xA3\xA3", 5, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F},
6 },
{ __LINE__, {0x600,0xA00}, 5, 0xBEAF, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3",
5, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 6 },
{ __LINE__, {0x000,0x502}, 1, 0xBEAF, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3",
6, 8, {0, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 6 },
{ __LINE__, {0x600,0xA00}, 6, 0xBEAF, CP_UTF8, 0, "\xF8\xA3\xA3\xA3\xA3",
6, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0}, 6 },
/* invalid 6-byte UTF-8 sequences */
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 1, 8, {0x7F7F, 0x7F7F}, 2 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 1, 8, {0x7F7F, 0x7F7F}, 2 },
{ __LINE__, {0x600,0xA00}, 1, 0xBEAF, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 1, 8, {0xFFFD, 0x7F7F}, 2 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 2, 8, {0x7F7F, 0x7F7F, 0x7F7F}, 3 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 2, 8, {0x7F7F, 0x7F7F, 0x7F7F}, 3 },
{ __LINE__, {0x600,0xA00}, 2, 0xBEAF, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 2, 8, {0xFFFD, 0xFFFD, 0x7F7F}, 3 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 3, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 4 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 3, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 4 },
{ __LINE__, {0x600,0xA00}, 3, 0xBEAF, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 3, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 4 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 4, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 5
},
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 4, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 5
},
{ __LINE__, {0x600,0xA00}, 4, 0xBEAF, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 4, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 5
},
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 5, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F}, 6 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 5, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F}, 6 },
{ __LINE__, {0x600,0xA00}, 5, 0xBEAF, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 5, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0x7F7F}, 6 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 6, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F, 0x7F7F}, 7 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 6, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F, 0x7F7F}, 7 },
{ __LINE__, {0x600,0xA00}, 6, 0xBEAF, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 6, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0x7F7F}, 7 },
{ __LINE__, {0x000,0x502}, 1, 0xBEAF, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 7, 8, {0, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F}, 7 },
{ __LINE__, {0x600,0xA00}, 7, 0xBEAF, CP_UTF8, 0,
"\xFC\xA3\xA3\xA3\xA3\xA3", 7, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0}, 7 },
/* invalid 7-byte UTF-8 sequences */
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 1, 8, {0x7F7F, 0x7F7F}, 2 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 1, 8, {0x7F7F, 0x7F7F}, 2 },
{ __LINE__, {0x600,0xA00}, 1, 0xBEAF, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 1, 8, {0xFFFD, 0x7F7F}, 2 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 2, 8, {0x7F7F, 0x7F7F, 0x7F7F}, 3 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 2, 8, {0x7F7F, 0x7F7F, 0x7F7F}, 3 },
{ __LINE__, {0x600,0xA00}, 2, 0xBEAF, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 2, 8, {0xFFFD, 0xFFFD, 0x7F7F}, 3 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 3, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 4 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 3, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 4 },
{ __LINE__, {0x600,0xA00}, 3, 0xBEAF, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 3, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 4 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 4, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F},
5 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 4, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F},
5 },
{ __LINE__, {0x600,0xA00}, 4, 0xBEAF, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 4, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F},
5 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 5, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F}, 6 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 5, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F}, 6 },
{ __LINE__, {0x600,0xA00}, 5, 0xBEAF, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 5, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0x7F7F}, 6 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 6, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F, 0x7F7F}, 7 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 6, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F, 0x7F7F}, 7 },
{ __LINE__, {0x600,0xA00}, 6, 0xBEAF, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 6, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0x7F7F}, 7 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 7, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F, 0x7F7F, 0x7F7F}, 8 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 7, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F, 0x7F7F, 0x7F7F}, 8 },
{ __LINE__, {0x600,0xA00}, 7, 0xBEAF, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 7, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0xFFFD, 0x7F7F}, 8 },
{ __LINE__, {0x000,0x502}, 1, 0xBEAF, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 8, 8, {0, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F, 0x7F7F, 0x7F7F}, 8 },
{ __LINE__, {0x600,0xA00}, 8, 0xBEAF, CP_UTF8, 0,
"\xFE\xA3\xA3\xA3\xA3\xA3\xA3", 8, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0xFFFD, 0}, 8 },
/* invalid UTF-8 sequences */
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 1, 8, {0x7F7F, 0x7F7F}, 2 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 1, 8, {0x7F7F, 0x7F7F}, 2 },
{ __LINE__, {0x600,0xA00}, 1, 0xBEAF, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 1, 8, {0xFFFD, 0x7F7F}, 2 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 2, 8, {0x7F7F, 0x7F7F, 0x7F7F}, 3 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 2, 8, {0x7F7F, 0x7F7F, 0x7F7F}, 3 },
{ __LINE__, {0x600,0xA00}, 2, 0xBEAF, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 2, 8, {0xFFFD, 0xFFFD, 0x7F7F}, 3 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 3, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 4
},
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 3, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 4
},
{ __LINE__, {0x600,0xA00}, 3, 0xBEAF, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 3, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 4
},
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 4, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F}, 5 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 4, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F}, 5 },
{ __LINE__, {0x600,0xA00}, 4, 0xBEAF, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 4, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0x7F7F}, 5 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 5, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F, 0x7F7F}, 6 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 5, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F, 0x7F7F}, 6 },
{ __LINE__, {0x600,0xA00}, 5, 0xBEAF, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 5, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0x7F7F}, 6 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 6, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F, 0x7F7F, 0x7F7F}, 7 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 6, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F, 0x7F7F, 0x7F7F}, 7 },
{ __LINE__, {0x600,0xA00}, 6, 0xBEAF, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 6, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0xFFFD, 0x7F7F}, 7 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 7, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 8 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 7, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 8 },
{ __LINE__, {0x600,0xA00}, 7, 0xBEAF, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 7, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 8 },
- { __LINE__, {0x000,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 8, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 9 },
+ { __LINE__, {0x502,0x502}, 0, ERROR_SUCCESS, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 8, 8, {0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 9 },
{ __LINE__, {0x600,0xA00}, 8, 0xBEAF, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 8, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 9 },
{ __LINE__, {0x000,0x502}, 1, 0xBEAF, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 9, 8, {0, 0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F,
0x7F7F, 0x7F7F, 0x7F7F, 0x7F7F}, 9 },
{ __LINE__, {0x600,0xA00}, 0, ERROR_INSUFFICIENT_BUFFER, CP_UTF8, 0,
"\xFF\xA3\xA3\xA3\xA3\xA3\xA3\xA3", 9, 8, {0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x7F7F}, 9 },
@@ -308,6 +306,10 @@ START_TEST(MultiByteToWideChar)
OsVersion = (vi.dwMajorVersion << 8) | vi.dwMinorVersion;
+ /* NOTE: We use Win10's MultiByteToWideChar behaviour due to security reason. */
+ if (IsReactOS())
+ OsVersion = 0xa00;
+
for (i = 0; i < _countof(Entries); ++i)
{
TestEntry(&Entries[i]);