Module: wine Branch: master Commit: 9efd46b497cf168baf707fc3c5f72d013bf57d16 URL: https://gitlab.winehq.org/wine/wine/-/commit/9efd46b497cf168baf707fc3c5f72d0...
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 HTMLDOMChildrenCollection.
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com
---
dlls/mshtml/htmlnode.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-)
diff --git a/dlls/mshtml/htmlnode.c b/dlls/mshtml/htmlnode.c index f0dc460d596..a4f1046cc2b 100644 --- a/dlls/mshtml/htmlnode.c +++ b/dlls/mshtml/htmlnode.c @@ -200,22 +200,12 @@ static HRESULT WINAPI HTMLDOMChildrenCollection_QueryInterface(IHTMLDOMChildrenC { HTMLDOMChildrenCollection *This = impl_from_IHTMLDOMChildrenCollection(iface);
- TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = &This->IHTMLDOMChildrenCollection_iface; - }else if(IsEqualGUID(&IID_IHTMLDOMChildrenCollection, riid)) { - *ppv = &This->IHTMLDOMChildrenCollection_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 HTMLDOMChildrenCollection_AddRef(IHTMLDOMChildrenCollection *iface) @@ -355,6 +345,16 @@ static inline HTMLDOMChildrenCollection *impl_from_DispatchEx(DispatchEx *iface) return CONTAINING_RECORD(iface, HTMLDOMChildrenCollection, dispex); }
+static void *HTMLDOMChildrenCollection_query_interface(DispatchEx *dispex, REFIID riid) +{ + HTMLDOMChildrenCollection *This = impl_from_DispatchEx(dispex); + + if(IsEqualGUID(&IID_IHTMLDOMChildrenCollection, riid)) + return &This->IHTMLDOMChildrenCollection_iface; + + return NULL; +} + static void HTMLDOMChildrenCollection_traverse(DispatchEx *dispex, nsCycleCollectionTraversalCallback *cb) { HTMLDOMChildrenCollection *This = impl_from_DispatchEx(dispex); @@ -443,6 +443,7 @@ static HRESULT HTMLDOMChildrenCollection_invoke(DispatchEx *dispex, DISPID id, L }
static const dispex_static_data_vtbl_t HTMLDOMChildrenCollection_dispex_vtbl = { + .query_interface = HTMLDOMChildrenCollection_query_interface, .destructor = HTMLDOMChildrenCollection_destructor, .traverse = HTMLDOMChildrenCollection_traverse, .unlink = HTMLDOMChildrenCollection_unlink,