[3/4] msxml3: Add separate QueryInterface implementation for IEnumVARIANT interface exported by IXMLElementCollection. Resend.
Dmitry Timoshkov
dmitry at baikal.ru
Wed Jan 29 23:07:47 CST 2014
---
dlls/msxml3/tests/xmldoc.c | 1 -
dlls/msxml3/xmlelem.c | 14 +++++++++++++-
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/dlls/msxml3/tests/xmldoc.c b/dlls/msxml3/tests/xmldoc.c
index e04f30f..47d28a5 100644
--- a/dlls/msxml3/tests/xmldoc.c
+++ b/dlls/msxml3/tests/xmldoc.c
@@ -728,7 +728,6 @@ static void test_xmlelem_collection(void)
ok(unk != NULL, "Expected non-NULL unk\n");
hr = IUnknown_QueryInterface(unk, &IID_IXMLElementCollection, (LPVOID *)&enumVar);
-todo_wine
ok(hr == E_NOINTERFACE, "Expected E_NOINTERFACE, got %08x\n", hr);
hr = IUnknown_QueryInterface(unk, &IID_IEnumVARIANT, (LPVOID *)&enumVar);
diff --git a/dlls/msxml3/xmlelem.c b/dlls/msxml3/xmlelem.c
index cdb7805..9ca5ad3 100644
--- a/dlls/msxml3/xmlelem.c
+++ b/dlls/msxml3/xmlelem.c
@@ -718,7 +718,19 @@ 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));
+ return E_NOINTERFACE;
}
static ULONG WINAPI xmlelem_collection_IEnumVARIANT_AddRef(
--
1.8.5.3
More information about the wine-patches
mailing list