From 9ab9aebf65d9641b7594c7596256570c54608fa8 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Fri, 31 Jan 2014 15:18:26 +0900 Subject: [PATCH] msxml3: Add separate QueryInterface implementation for IEnumVARIANT interface exported by IXMLElementCollection. --- dlls/msxml3/tests/xmldoc.c | 2 -- dlls/msxml3/xmlelem.c | 15 ++++++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/dlls/msxml3/tests/xmldoc.c b/dlls/msxml3/tests/xmldoc.c index ea05dd8f336..2478a573cfc 100644 --- a/dlls/msxml3/tests/xmldoc.c +++ b/dlls/msxml3/tests/xmldoc.c @@ -729,9 +729,7 @@ static void test_xmlelem_collection(void) enumVar = (void *)0xdeadbeef; hr = IUnknown_QueryInterface(unk, &IID_IXMLElementCollection, (LPVOID *)&enumVar); -todo_wine ok(hr == E_NOINTERFACE, "Expected E_NOINTERFACE, got %08x\n", hr); -todo_wine ok(enumVar == NULL || broken(enumVar == (void *)0xdeadbeef) /* XP */, "Expected NULL, got %p\n", enumVar); hr = IUnknown_QueryInterface(unk, &IID_IEnumVARIANT, (LPVOID *)&enumVar); diff --git a/dlls/msxml3/xmlelem.c b/dlls/msxml3/xmlelem.c index cdb78050463..f188ca13044 100644 --- a/dlls/msxml3/xmlelem.c +++ b/dlls/msxml3/xmlelem.c @@ -718,7 +718,20 @@ static HRESULT WINAPI xmlelem_collection_IEnumVARIANT_QueryInterface( IEnumVARIANT *iface, REFIID riid, LPVOID *ppvObj) { xmlelem_collection *this = impl_from_IEnumVARIANT(iface); - return IXMLDocument_QueryInterface((IXMLDocument *)this, riid, ppvObj); + + TRACE("(%p)->(%s %p)\n", this, debugstr_guid(riid), ppvObj); + + if (IsEqualGUID(riid, &IID_IUnknown) || + IsEqualGUID(riid, &IID_IEnumVARIANT)) + { + *ppvObj = iface; + IEnumVARIANT_AddRef(iface); + return S_OK; + } + + FIXME("interface %s not implemented\n", debugstr_guid(riid)); + *ppvObj = NULL; + return E_NOINTERFACE; } static ULONG WINAPI xmlelem_collection_IEnumVARIANT_AddRef(