Rob Shearman : ole32: Objects registered as local servers don' t need to support IClassFactory.
Alexandre Julliard
julliard at winehq.org
Fri Nov 20 10:48:05 CST 2009
Module: wine
Branch: master
Commit: d963e97f32249ba25128be7f890b3eb55e9db9a0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d963e97f32249ba25128be7f890b3eb55e9db9a0
Author: Rob Shearman <robertshearman at gmail.com>
Date: Fri Nov 20 14:48:57 2009 +0000
ole32: Objects registered as local servers don't need to support IClassFactory.
---
dlls/ole32/compobj.c | 2 +-
dlls/ole32/tests/compobj.c | 8 ++++++++
2 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c
index c8c4808..580f4d3 100644
--- a/dlls/ole32/compobj.c
+++ b/dlls/ole32/compobj.c
@@ -2130,7 +2130,7 @@ HRESULT WINAPI CoRegisterClassObject(
FIXME("Failed to create stream on hglobal, %x\n", hr);
return hr;
}
- hr = CoMarshalInterface(newClass->pMarshaledData, &IID_IClassFactory,
+ hr = CoMarshalInterface(newClass->pMarshaledData, &IID_IUnknown,
newClass->classObject, MSHCTX_LOCAL, NULL,
MSHLFLAGS_TABLESTRONG);
if (hr) {
diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c
index 5ddfc11..e868014 100644
--- a/dlls/ole32/tests/compobj.c
+++ b/dlls/ole32/tests/compobj.c
@@ -837,6 +837,14 @@ static void test_CoRegisterClassObject(void)
hr = CoRevokeClassObject(cookie);
ok_ole_success(hr, "CoRevokeClassObject");
+ /* test whether an object that doesn't support IClassFactory can be
+ * registered for CLSCTX_LOCAL_SERVER */
+ hr = CoRegisterClassObject(&CLSID_WineOOPTest, &Test_Unknown,
+ CLSCTX_LOCAL_SERVER, REGCLS_SINGLEUSE, &cookie);
+ ok_ole_success(hr, "CoRegisterClassObject");
+ hr = CoRevokeClassObject(cookie);
+ ok_ole_success(hr, "CoRevokeClassObject");
+
/* test whether registered class becomes invalid when apartment is destroyed */
hr = CoRegisterClassObject(&CLSID_WineOOPTest, (IUnknown *)&Test_ClassFactory,
CLSCTX_INPROC_SERVER, REGCLS_SINGLEUSE, &cookie);
More information about the wine-cvs
mailing list