Gabriel Ivăncescu : mshtml: Use query_interface in the dispex vtbl for HTMLEventObj.
Module: wine Branch: master Commit: 2ec410582523aba4f9be0d158567a2469542015d URL: https://gitlab.winehq.org/wine/wine/-/commit/2ec410582523aba4f9be0d158567a24... Author: Gabriel Ivăncescu <gabrielopcode(a)gmail.com> Date: Mon Sep 11 14:57:06 2023 +0300 mshtml: Use query_interface in the dispex vtbl for HTMLEventObj. Signed-off-by: Gabriel Ivăncescu <gabrielopcode(a)gmail.com> --- dlls/mshtml/htmlevent.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index f8a418a8027..1d79b404eff 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -363,22 +363,12 @@ static HRESULT WINAPI HTMLEventObj_QueryInterface(IHTMLEventObj *iface, REFIID r { HTMLEventObj *This = impl_from_IHTMLEventObj(iface); - TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IHTMLEventObj_iface; - }else if(IsEqualGUID(&IID_IHTMLEventObj, riid)) { - *ppv = &This->IHTMLEventObj_iface; - }else if(dispex_query_interface(&This->dispex, riid, ppv)) { + if(dispex_query_interface(&This->dispex, riid, ppv)) return *ppv ? S_OK : E_NOINTERFACE; - }else { - *ppv = NULL; - WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - return E_NOINTERFACE; - } - IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; + *ppv = NULL; + WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); + return E_NOINTERFACE; } static ULONG WINAPI HTMLEventObj_AddRef(IHTMLEventObj *iface) @@ -883,6 +873,16 @@ static inline HTMLEventObj *HTMLEventObj_from_DispatchEx(DispatchEx *iface) return CONTAINING_RECORD(iface, HTMLEventObj, dispex); } +static void *HTMLEventObj_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLEventObj *This = HTMLEventObj_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IHTMLEventObj, riid)) + return &This->IHTMLEventObj_iface; + + return NULL; +} + static void HTMLEventObj_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { HTMLEventObj *This = HTMLEventObj_from_DispatchEx(dispex); @@ -907,6 +907,7 @@ static void HTMLEventObj_destructor(DispatchEx *dispex) } static const dispex_static_data_vtbl_t HTMLEventObj_dispex_vtbl = { + .query_interface = HTMLEventObj_query_interface, .destructor = HTMLEventObj_destructor, .traverse = HTMLEventObj_traverse, .unlink = HTMLEventObj_unlink
participants (1)
-
Alexandre Julliard