From: Anders Kjersem <andersdev@proton.me> --- programs/wscript/main.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/programs/wscript/main.c b/programs/wscript/main.c index 4e8bf4d462a..2725214006b 100644 --- a/programs/wscript/main.c +++ b/programs/wscript/main.c @@ -498,6 +498,12 @@ static BOOL init_engine(IActiveScript *script, IActiveScriptParse *parser) return SUCCEEDED(hres); } +static BOOL is_unicode_text(const VOID *lpv, int iSize) { + int result = IS_TEXT_UNICODE_SIGNATURE | IS_TEXT_UNICODE_STATISTICS | IS_TEXT_UNICODE_ILLEGAL_CHARS; + return IsTextUnicode(lpv, iSize, &result) && !(result & IS_TEXT_UNICODE_ILLEGAL_CHARS) && + (result & (IS_TEXT_UNICODE_SIGNATURE | IS_TEXT_UNICODE_STATISTICS)); +} + static BSTR get_script_str(const WCHAR *filename) { const char *file_map; @@ -525,7 +531,7 @@ 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(is_unicode_text(file_map, size)) { // UTF-16LE ret = SysAllocStringLen(NULL, size - 2); if (ret) CopyMemory(ret, file_map + 2, size - 2); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11043