Nikolay Sivov : msxml3/xmldoc: Fix IPersistStreamInit::GetClassID() for IXMLDocument.

Alexandre Julliard julliard at winehq.org
Thu Jan 14 11:33:36 CST 2010


Module: wine
Branch: master
Commit: a18ee2111ac6595c80a2e909c9925d32706557a5
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a18ee2111ac6595c80a2e909c9925d32706557a5

Author: Nikolay Sivov <bunglehead at gmail.com>
Date:   Tue Jan 12 04:13:15 2010 +0300

msxml3/xmldoc: Fix IPersistStreamInit::GetClassID() for IXMLDocument.

---

 dlls/msxml3/tests/xmldoc.c |    9 +++++++++
 dlls/msxml3/xmldoc.c       |    9 +++++++--
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/dlls/msxml3/tests/xmldoc.c b/dlls/msxml3/tests/xmldoc.c
index 8cf3357..426ef6f 100644
--- a/dlls/msxml3/tests/xmldoc.c
+++ b/dlls/msxml3/tests/xmldoc.c
@@ -361,6 +361,7 @@ static void test_persiststreaminit(void)
     HRESULT hr;
     ULARGE_INTEGER size;
     CHAR path[MAX_PATH];
+    CLSID id;
 
     hr = CoCreateInstance(&CLSID_XMLDocument, NULL, CLSCTX_INPROC_SERVER,
                           &IID_IXMLDocument, (LPVOID*)&doc);
@@ -380,6 +381,9 @@ static void test_persiststreaminit(void)
     hr = IPersistStreamInit_Save(psi, NULL, FALSE);
     todo_wine ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got %08x\n", hr);
 
+    hr = IPersistStreamInit_GetClassID(psi, NULL);
+    ok(hr == E_POINTER, "Expected E_INVALIDARG, got %08x\n", hr);
+
     create_xml_file("bank.xml");
     GetFullPathNameA("bank.xml", MAX_PATH, path, NULL);
     create_stream_on_file(&stream, path);
@@ -426,6 +430,11 @@ static void test_persiststreaminit(void)
     todo_wine ok(stat.cbSize.QuadPart > 0, "Expected >0\n");
     IStream_Release(stream);
 
+    memset(&id, 0, sizeof(id));
+    hr = IPersistStreamInit_GetClassID(psi, &id);
+    ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
+    ok(IsEqualCLSID(&id, &CLSID_XMLDocument), "Expected CLSID_XMLDocument\n");
+
 cleanup:
     IPersistStreamInit_Release(psi);
     IXMLDocument_Release(doc);
diff --git a/dlls/msxml3/xmldoc.c b/dlls/msxml3/xmldoc.c
index 72e185c..7f5e41d 100644
--- a/dlls/msxml3/xmldoc.c
+++ b/dlls/msxml3/xmldoc.c
@@ -574,8 +574,13 @@ static ULONG WINAPI xmldoc_IPersistStreamInit_Release(
 static HRESULT WINAPI xmldoc_IPersistStreamInit_GetClassID(
     IPersistStreamInit *iface, CLSID *classid)
 {
-    FIXME("(%p,%p): stub!\n", iface, classid);
-    return E_NOTIMPL;
+    xmldoc *this = impl_from_IPersistStreamInit(iface);
+    TRACE("(%p,%p)\n", this, classid);
+
+    if (!classid) return E_POINTER;
+
+    *classid = CLSID_XMLDocument;
+    return S_OK;
 }
 
 static HRESULT WINAPI xmldoc_IPersistStreamInit_IsDirty(




More information about the wine-cvs mailing list