Module: wine Branch: master Commit: a18ee2111ac6595c80a2e909c9925d32706557a5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=a18ee2111ac6595c80a2e909c9...
Author: Nikolay Sivov bunglehead@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(