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