From 6b75f930022e49c5baa58642ac88a5ecb0c4dda3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Gabriel=20Iv=C4=83ncescu?= Date: Fri, 12 Aug 2022 17:07:30 +0300 Subject: [PATCH] mshtml: Return DISP_E_MEMBERNOTFOUND when not finding member by DISPID. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit DISP_E_UNKNOWNNAME is for when retrieving the DISPID itself. Signed-off-by: Gabriel Ivăncescu --- dlls/mshtml/dispex.c | 14 +++++++------- dlls/mshtml/htmldoc.c | 4 ++-- dlls/mshtml/htmlelem.c | 2 +- dlls/mshtml/htmlelemcol.c | 2 +- dlls/mshtml/tests/events.c | 2 -- 5 files changed, 11 insertions(+), 13 deletions(-) diff --git a/dlls/mshtml/dispex.c b/dlls/mshtml/dispex.c index 7ab1df49cc5..3f5d4bbce76 100644 --- a/dlls/mshtml/dispex.c +++ b/dlls/mshtml/dispex.c @@ -1009,7 +1009,7 @@ static HRESULT get_builtin_func(dispex_data_t *data, DISPID id, func_info_t **re } WARN("invalid id %lx\n", id); - return DISP_E_UNKNOWNNAME; + return DISP_E_MEMBERNOTFOUND; } static HRESULT get_builtin_id(DispatchEx *This, BSTR name, DWORD grfdex, DISPID *ret) @@ -1366,7 +1366,7 @@ static HRESULT invoke_builtin_prop(DispatchEx *This, DISPID id, LCID lcid, WORD HRESULT hres; hres = get_builtin_func(This->info, id, &func); - if(id == DISPID_VALUE && hres == DISP_E_UNKNOWNNAME) + if(id == DISPID_VALUE && hres == DISP_E_MEMBERNOTFOUND) return dispex_value(This, lcid, flags, dp, res, ei, caller); if(FAILED(hres)) return hres; @@ -1686,7 +1686,7 @@ static HRESULT WINAPI DispatchEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lc switch(get_dispid_type(id)) { case DISPEXPROP_CUSTOM: if(!This->info->desc->vtbl || !This->info->desc->vtbl->invoke) - return DISP_E_UNKNOWNNAME; + return DISP_E_MEMBERNOTFOUND; return This->info->desc->vtbl->invoke(This, id, lcid, wFlags, pdp, pvarRes, pei, pspCaller); case DISPEXPROP_DYNAMIC: { @@ -1694,7 +1694,7 @@ static HRESULT WINAPI DispatchEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lc dynamic_prop_t *prop; if(!get_dynamic_data(This) || This->dynamic_data->prop_cnt <= idx) - return DISP_E_UNKNOWNNAME; + return DISP_E_MEMBERNOTFOUND; prop = This->dynamic_data->props+idx; @@ -1712,7 +1712,7 @@ static HRESULT WINAPI DispatchEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lc return invoke_disp_value(This, V_DISPATCH(&prop->var), lcid, wFlags, pdp, pvarRes, pei, pspCaller); case DISPATCH_PROPERTYGET: if(prop->flags & DYNPROP_DELETED) - return DISP_E_UNKNOWNNAME; + return DISP_E_MEMBERNOTFOUND; V_VT(pvarRes) = VT_EMPTY; return variant_copy(pvarRes, &prop->var); case DISPATCH_PROPERTYPUT: @@ -1826,7 +1826,7 @@ static HRESULT WINAPI DispatchEx_GetMemberName(IDispatchEx *iface, DISPID id, BS DWORD idx = id - DISPID_DYNPROP_0; if(!get_dynamic_data(This) || This->dynamic_data->prop_cnt <= idx) - return DISP_E_UNKNOWNNAME; + return DISP_E_MEMBERNOTFOUND; *pbstrName = SysAllocString(This->dynamic_data->props[idx].name); if(!*pbstrName) @@ -1874,7 +1874,7 @@ static HRESULT WINAPI DispatchEx_GetNextDispID(IDispatchEx *iface, DWORD grfdex, DWORD idx = id - DISPID_DYNPROP_0; if(!get_dynamic_data(This) || This->dynamic_data->prop_cnt <= idx) - return DISP_E_UNKNOWNNAME; + return DISP_E_MEMBERNOTFOUND; return next_dynamic_id(This, idx+1, pid); } diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index 350996f893e..e7074952983 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -5843,7 +5843,7 @@ static HRESULT HTMLDocumentNode_invoke(DispatchEx *dispex, DISPID id, LCID lcid, i = id - MSHTML_DISPID_CUSTOM_MIN; if(!This->nsdoc || i >= This->elem_vars_cnt) - return DISP_E_UNKNOWNNAME; + return DISP_E_MEMBERNOTFOUND; nsAString_InitDepend(&name_str, This->elem_vars[i]); nsres = nsIDOMHTMLDocument_GetElementsByName(This->nsdoc, &name_str, &node_list); @@ -5854,7 +5854,7 @@ static HRESULT HTMLDocumentNode_invoke(DispatchEx *dispex, DISPID id, LCID lcid, nsres = nsIDOMNodeList_Item(node_list, 0, &nsnode); nsIDOMNodeList_Release(node_list); if(NS_FAILED(nsres) || !nsnode) - return DISP_E_UNKNOWNNAME; + return DISP_E_MEMBERNOTFOUND; hres = get_node(nsnode, TRUE, &node); if(FAILED(hres)) diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index f8fa285999e..d341623d4d5 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -1124,7 +1124,7 @@ static HRESULT HTMLRectCollection_invoke(DispatchEx *dispex, DISPID id, LCID lci nsres = nsIDOMClientRectList_Item(This->rect_list, id - MSHTML_DISPID_CUSTOM_MIN, &rect); if(NS_FAILED(nsres) || !rect) { WARN("Unknown item\n"); - return DISP_E_UNKNOWNNAME; + return DISP_E_MEMBERNOTFOUND; } hres = create_html_rect(rect, dispex_compat_mode(&This->dispex), &html_rect); diff --git a/dlls/mshtml/htmlelemcol.c b/dlls/mshtml/htmlelemcol.c index 385bd9038b2..180f75d630b 100644 --- a/dlls/mshtml/htmlelemcol.c +++ b/dlls/mshtml/htmlelemcol.c @@ -591,7 +591,7 @@ static HRESULT HTMLElementCollection_invoke(DispatchEx *dispex, DISPID id, LCID idx = id - DISPID_ELEMCOL_0; if(idx >= This->len) - return DISP_E_UNKNOWNNAME; + return DISP_E_MEMBERNOTFOUND; switch(flags) { case DISPATCH_PROPERTYGET: diff --git a/dlls/mshtml/tests/events.c b/dlls/mshtml/tests/events.c index c5210e721d2..87151987f16 100644 --- a/dlls/mshtml/tests/events.c +++ b/dlls/mshtml/tests/events.c @@ -2542,12 +2542,10 @@ static void test_timeout(IHTMLDocument2 *doc) V_VT(&var) = VT_EMPTY; hres = IDispatch_Invoke(disp, DISPID_IHTMLWINDOW2_SETINTERVAL, &IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &dp, &var, NULL, &argerr); - todo_wine ok(hres == DISP_E_MEMBERNOTFOUND, "Invoke(DISPID_IHTMLWINDOW2_SETINTERVAL) returned: %08lx\n", hres); hres = IDispatch_Invoke(disp, DISPID_IHTMLWINDOW2_SETTIMEOUT, &IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &dp, &var, NULL, &argerr); - todo_wine ok(hres == DISP_E_MEMBERNOTFOUND, "Invoke(DISPID_IHTMLWINDOW2_SETTIMEOUT) returned: %08lx\n", hres); SysFreeString(V_BSTR(&args[1])); IDispatch_Release(disp); -- 2.11.4.GIT