Module: wine Branch: master Commit: 6b75f930022e49c5baa58642ac88a5ecb0c4dda3 URL: https://gitlab.winehq.org/wine/wine/-/commit/6b75f930022e49c5baa58642ac88a5e...
Author: Gabriel Ivăncescu gabrielopcode@gmail.com Date: Fri Aug 12 17:07:30 2022 +0300
mshtml: Return DISP_E_MEMBERNOTFOUND when not finding member by DISPID.
DISP_E_UNKNOWNNAME is for when retrieving the DISPID itself.
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com
---
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);