From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/omnavigator.c | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-)
diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c index 85a8cd0e41a..103bbd9b7a6 100644 --- a/dlls/mshtml/omnavigator.c +++ b/dlls/mshtml/omnavigator.c @@ -60,22 +60,12 @@ static HRESULT WINAPI HTMLDOMImplementation_QueryInterface(IHTMLDOMImplementatio { HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IHTMLDOMImplementation, riid)) { - *ppv = &This->IHTMLDOMImplementation_iface; - }else if(IsEqualGUID(&IID_IHTMLDOMImplementation2, riid)) { - *ppv = &This->IHTMLDOMImplementation2_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 { - WARN("Unsupported interface %s\n", debugstr_mshtml_guid(riid)); - *ppv = NULL; - 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 HTMLDOMImplementation_AddRef(IHTMLDOMImplementation *iface) @@ -287,6 +277,18 @@ static inline HTMLDOMImplementation *HTMLDOMImplementation_from_DispatchEx(Dispa return CONTAINING_RECORD(iface, HTMLDOMImplementation, dispex); }
+static void *HTMLDOMImplementation_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLDOMImplementation *This = HTMLDOMImplementation_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IHTMLDOMImplementation, riid)) + return &This->IHTMLDOMImplementation_iface; + if(IsEqualGUID(&IID_IHTMLDOMImplementation2, riid)) + return &This->IHTMLDOMImplementation2_iface; + + return NULL; +} + static void HTMLDOMImplementation_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { HTMLDOMImplementation *This = HTMLDOMImplementation_from_DispatchEx(dispex); @@ -308,6 +310,7 @@ static void HTMLDOMImplementation_destructor(DispatchEx *dispex) }
static const dispex_static_data_vtbl_t HTMLDOMImplementation_dispex_vtbl = { + .query_interface = HTMLDOMImplementation_query_interface, .destructor = HTMLDOMImplementation_destructor, .traverse = HTMLDOMImplementation_traverse, .unlink = HTMLDOMImplementation_unlink