[PATCH v3 0/3] MR11043: wscript: Support UTF-16LE scripts with BOM
-- v3: Added UTF16-LE file test https://gitlab.winehq.org/wine/wine/-/merge_requests/11043
From: Anders Kjersem <andersdev@proton.me> --- programs/wscript/main.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/programs/wscript/main.c b/programs/wscript/main.c index a971ceeec8d..9b1fa25ff85 100644 --- a/programs/wscript/main.c +++ b/programs/wscript/main.c @@ -525,9 +525,18 @@ static BSTR get_script_str(const WCHAR *filename) if(!file_map) return NULL; - len = MultiByteToWideChar(CP_ACP, 0, file_map, size, NULL, 0); - ret = SysAllocStringLen(NULL, len); - MultiByteToWideChar(CP_ACP, 0, file_map, size, ret, len); + if(size >= 2 && (BYTE)file_map[0] == 0xff && (BYTE)file_map[1] == 0xfe) // UTF-16LE + { + ret = SysAllocStringLen(NULL, size - 2); + if (ret) + CopyMemory(ret, file_map + 2, size - 2); + } + else + { + len = MultiByteToWideChar(CP_ACP, 0, file_map, size, NULL, 0); + ret = SysAllocStringLen(NULL, len); + MultiByteToWideChar(CP_ACP, 0, file_map, size, ret, len); + } UnmapViewOfFile(file_map); return ret; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11043
From: Anders Kjersem <andersdev@proton.me> --- programs/wscript/main.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/programs/wscript/main.c b/programs/wscript/main.c index 9b1fa25ff85..4e8bf4d462a 100644 --- a/programs/wscript/main.c +++ b/programs/wscript/main.c @@ -525,14 +525,12 @@ static BSTR get_script_str(const WCHAR *filename) if(!file_map) return NULL; - if(size >= 2 && (BYTE)file_map[0] == 0xff && (BYTE)file_map[1] == 0xfe) // UTF-16LE - { + if(size >= 2 && (BYTE)file_map[0] == 0xff && (BYTE)file_map[1] == 0xfe) { // UTF-16LE ret = SysAllocStringLen(NULL, size - 2); if (ret) CopyMemory(ret, file_map + 2, size - 2); } - else - { + else { len = MultiByteToWideChar(CP_ACP, 0, file_map, size, NULL, 0); ret = SysAllocStringLen(NULL, len); MultiByteToWideChar(CP_ACP, 0, file_map, size, ret, len); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11043
From: Anders Kjersem <andersdev@proton.me> --- programs/wscript/tests/run.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/programs/wscript/tests/run.c b/programs/wscript/tests/run.c index abb01774117..f6e3ac165bf 100644 --- a/programs/wscript/tests/run.c +++ b/programs/wscript/tests/run.c @@ -858,6 +858,17 @@ START_TEST(run) "winetest.reportSuccess();\n" "WScript.Quit(3);\n" "winetest.ok(false, 'not quit?');\n", 3); + { + static const WCHAR script[] = { + 0xff, 0xfe, 'v', 'a', 'r', ' ', 'W', 'T', ' ', '=', ' ', 'n', 'e', 'w', ' ', + 'A', 'c', 't', 'i', 'v', 'e', 'X', 'O', 'b', 'j', 'e', 'c', 't', '(', 39, 'W', + 'i', 'n', 'e', '.', 'T', 'e', 's', 't', 39, ')', ';', 10, 'W', 'T', '.', 'r', + 'e', 'p', 'o', 'r', 't', 'S', 'u', 'c', 'c', 'e', 's', 's', '(', ')', ';', 10, + 'W', 'S', 'c', 'r', 'i', 'p', 't', '.', 'Q', 'u', 'i', 't', '(', '3', ')', ';', + 10, 'W', 'T', '.', 'o', 'k', '(', 'f', 'a', 'l', 's', 'e', ',', ' ', 39, 'n', + 'o', 't', ' ', 'q', 'u', 'i', 't', '?', 39, ')', ';', 10 }; + run_script("UTF16LE.js", (char *) script, sizeof(script), 3); + } run_cscript_error_test(); run_cscript_unknown_option_test(); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11043
participants (2)
-
Anders Kjersem -
Anders Kjersem (@anders)