PATCH: some ole fixes

Marcus Meissner marcus at jet.franken.de
Sun Nov 3 16:22:50 CST 2002


Hi,

Ciao, Marcus

Changelog:
	Handle errors in std marshaller better, do not crash.
	Added another error message if some program tries to 
	marshal IOleObject.
	OleCreate() should be able to use Local Servers too
	(it can't as of now, just for debugging).

Index: dlls/ole32/marshal.c
===================================================================
RCS file: /home/wine/wine/dlls/ole32/marshal.c,v
retrieving revision 1.5
diff -u -r1.5 marshal.c
--- marshal.c	31 May 2002 23:25:50 -0000	1.5
+++ marshal.c	3 Nov 2002 22:20:56 -0000
@@ -316,12 +316,14 @@
     return hres;
   }
   hres = PIPE_GetNewPipeBuf(&mid,&chanbuf);
-  if (hres)
-    FIXME("Failed to get an rpc channel buffer for %s\n",debugstr_guid(riid));
-  IRpcProxyBuffer_Connect(rpcproxy,chanbuf);
-  IRpcProxyBuffer_Release(rpcproxy); /* no need */
+  if (hres) {
+    ERR("Failed to get an rpc channel buffer for %s\n",debugstr_guid(riid));
+  } else {
+    IRpcProxyBuffer_Connect(rpcproxy,chanbuf);
+    IRpcProxyBuffer_Release(rpcproxy); /* no need */
+  }
   IPSFactoryBuffer_Release(psfacbuf);
-  return S_OK;
+  return hres;
 }
 
 HRESULT WINAPI
@@ -477,7 +479,11 @@
 	MESSAGE("\nERROR: You need to merge the 'winedefault.reg' file into your\n");
 	MESSAGE("       Wine registry by running: `regedit winedefault.reg'\n\n");
     } else {
-	FIXME("Failed to Marshal the interface, %lx?\n",hres);
+    	if (IsEqualGUID(riid,&IID_IOleObject)) {
+	    ERR("WINE currently cannot marshal IOleObject interfaces. This means you cannot embed/link OLE objects between applications.\n");
+	} else {
+	    FIXME("Failed to marshal the interface %s, %lx?\n",debugstr_guid(riid),hres);
+	}
     }
     goto release_marshal;
   }
Index: dlls/ole32/ole2stubs.c
===================================================================
RCS file: /home/wine/wine/dlls/ole32/ole2stubs.c,v
retrieving revision 1.23
diff -u -r1.23 ole2stubs.c
--- ole2stubs.c	31 May 2002 23:25:50 -0000	1.23
+++ ole2stubs.c	3 Nov 2002 22:20:56 -0000
@@ -97,7 +97,7 @@
 
   FIXME("\n\t%s\n\t%s stub!\n", debugstr_guid(rclsid), debugstr_guid(riid));
 
-  if (SUCCEEDED((hres = CoCreateInstance(rclsid, 0, CLSCTX_INPROC_SERVER, riid, (LPVOID*)&pUnk))))
+  if (SUCCEEDED((hres = CoCreateInstance(rclsid, 0, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER|CLSCTX_LOCAL_SERVER , riid, (LPVOID*)&pUnk))))
   {
     if (pClientSite)
     {



More information about the wine-patches mailing list