Module: wine Branch: master Commit: d2f5eaf9165bc8eaa5205daabee9c6c997cd4e54 URL: https://source.winehq.org/git/wine.git/?a=commit;h=d2f5eaf9165bc8eaa5205daab...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Aug 12 14:02:21 2019 +0200
mshtml: Support semicolon in UA compatible string.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/mshtml/mutation.c | 9 ++++++--- dlls/mshtml/tests/script.c | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/dlls/mshtml/mutation.c b/dlls/mshtml/mutation.c index ab748c7..6903fe8 100644 --- a/dlls/mshtml/mutation.c +++ b/dlls/mshtml/mutation.c @@ -405,7 +405,7 @@ BOOL parse_compat_version(const WCHAR *version_string, compat_mode_t *r)
for(p = version_string; '0' <= *p && *p <= '9'; p++) version = version * 10 + *p-'0'; - if(*p || p == version_string) + if((*p && *p != ';') || p == version_string) return FALSE;
switch(version){ @@ -434,7 +434,7 @@ BOOL parse_compat_version(const WCHAR *version_string, compat_mode_t *r) static BOOL parse_ua_compatible(const WCHAR *p, compat_mode_t *r) { static const WCHAR ie_eqW[] = {'I','E','='}; - static const WCHAR edgeW[] = {'e','d','g','e',0}; + static const WCHAR edgeW[] = {'e','d','g','e'};
TRACE("%s\n", debugstr_w(p));
@@ -442,7 +442,10 @@ static BOOL parse_ua_compatible(const WCHAR *p, compat_mode_t *r) return FALSE; p += 3;
- if(!wcsicmp(p, edgeW)) { + if(!wcsnicmp(p, edgeW, ARRAY_SIZE(edgeW))) { + p += ARRAY_SIZE(edgeW); + if(*p && *p != ';') + return FALSE; *r = COMPAT_MODE_IE11; return TRUE; } diff --git a/dlls/mshtml/tests/script.c b/dlls/mshtml/tests/script.c index d4c53cd..e62b83d 100644 --- a/dlls/mshtml/tests/script.c +++ b/dlls/mshtml/tests/script.c @@ -3493,9 +3493,9 @@ static void run_js_tests(void) run_script_as_http_with_mode("documentmode.js", "7", "7"); run_script_as_http_with_mode("documentmode.js", "8", "8"); run_script_as_http_with_mode("documentmode.js", "9", "9"); - run_script_as_http_with_mode("documentmode.js", "10", "10"); + run_script_as_http_with_mode("documentmode.js", "10", "10;abc"); run_script_as_http_with_mode("documentmode.js", "11", "11"); - run_script_as_http_with_mode("documentmode.js", "11", "edge"); + run_script_as_http_with_mode("documentmode.js", "11", "edge;123");
run_script_as_http_with_mode("asyncscriptload.js", NULL, "9"); }