Module: wine Branch: master Commit: ab0cc29c005e067925969fd634a9bdfc3e43d3e3 URL: https://gitlab.winehq.org/wine/wine/-/commit/ab0cc29c005e067925969fd634a9bdf...
Author: Gabriel Ivăncescu gabrielopcode@gmail.com Date: Fri Sep 8 18:24:27 2023 +0300
mshtml: Use query_interface in the dispex vtbl for HTMLLocation.
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com
---
dlls/mshtml/htmllocation.c | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-)
diff --git a/dlls/mshtml/htmllocation.c b/dlls/mshtml/htmllocation.c index 5941c383db4..809ea3f5d35 100644 --- a/dlls/mshtml/htmllocation.c +++ b/dlls/mshtml/htmllocation.c @@ -63,26 +63,12 @@ static HRESULT WINAPI HTMLLocation_QueryInterface(IHTMLLocation *iface, REFIID r { HTMLLocation *This = impl_from_IHTMLLocation(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IHTMLLocation_iface; - }else if(IsEqualGUID(&IID_IHTMLLocation, riid)) { - *ppv = &This->IHTMLLocation_iface; - }else if(IsEqualGUID(&IID_IMarshal, riid)) { - *ppv = NULL; - FIXME("(%p)->(IID_IMarshal %p)\n", This, ppv); - return E_NOINTERFACE; - }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 HTMLLocation_AddRef(IHTMLLocation *iface) @@ -615,6 +601,20 @@ static inline HTMLLocation *impl_from_DispatchEx(DispatchEx *iface) return CONTAINING_RECORD(iface, HTMLLocation, dispex); }
+static void *HTMLLocation_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLLocation *This = impl_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IHTMLLocation, riid)) + return &This->IHTMLLocation_iface; + if(IsEqualGUID(&IID_IMarshal, riid)) { + FIXME("(%p)->(IID_IMarshal)\n", This); + return NULL; + } + + return NULL; +} + static void HTMLLocation_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { HTMLLocation *This = impl_from_DispatchEx(dispex); @@ -639,6 +639,7 @@ static void HTMLLocation_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t HTMLLocation_dispex_vtbl = { + .query_interface = HTMLLocation_query_interface, .destructor = HTMLLocation_destructor, .traverse = HTMLLocation_traverse, .unlink = HTMLLocation_unlink