From: Phiality <bakreski03@gmail.com> In quirks mode (pre-IE9), calling DISPID_VALUE with DISPATCH_METHOD | DISPATCH_PROPERTYGET on a function object should return E_ACCESSDENIED, matching Windows behavior. Also removes todo_wine markers from test_method_vs_getter since Wine now correctly matches Windows behavior for all cases. --- dlls/mshtml/dispex.c | 2 ++ dlls/mshtml/tests/dom.c | 3 --- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/dlls/mshtml/dispex.c b/dlls/mshtml/dispex.c index a6b8afb0543..4ad5c084465 100644 --- a/dlls/mshtml/dispex.c +++ b/dlls/mshtml/dispex.c @@ -1151,6 +1151,8 @@ static HRESULT function_value(DispatchEx *dispex, LCID lcid, WORD flags, DISPPAR case DISPATCH_METHOD|DISPATCH_PROPERTYGET: if(!res) return E_INVALIDARG; + if(This->obj && dispex_compat_mode(This->obj) < COMPAT_MODE_IE9) + return E_ACCESSDENIED; /* fall through */ case DISPATCH_METHOD: if(!This->obj) diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 861042bc6eb..b08e7363b8e 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -11745,9 +11745,7 @@ static void test_method_vs_getter(IHTMLDocument2 *doc) V_VT(&v) = VT_EMPTY; hres = IDispatchEx_InvokeEx(dispex, DISPID_VALUE, LOCALE_NEUTRAL, DISPATCH_METHOD | DISPATCH_PROPERTYGET, &dp, &v, NULL, NULL); - todo_wine_if(compat_mode < COMPAT_IE9) ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres); - todo_wine_if(compat_mode < COMPAT_IE9) ok(V_VT(&v) == VT_BSTR, "V_VT = %d\n", V_VT(&v)); VariantClear(&v); @@ -11799,7 +11797,6 @@ static void test_method_vs_getter(IHTMLDocument2 *doc) hres = IDispatchEx_InvokeEx(dispex, DISPID_VALUE, LOCALE_NEUTRAL, DISPATCH_METHOD | DISPATCH_PROPERTYGET, &dp, &v, NULL, NULL); if(compat_mode < COMPAT_IE9) - todo_wine ok(hres == E_ACCESSDENIED, "InvokeEx returned: %08lx\n", hres); else { ok(hres == S_OK, "InvokeEx failed: %08lx\n", hres); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10025