Commit d3217872 authored by Rob Shearman's avatar Rob Shearman Committed by Alexandre Julliard

ole32: Allow the marshaling/unmarshaling of NULL interfaces for IClassFactory.

parent 67386352
...@@ -181,12 +181,19 @@ CFStub_Invoke( ...@@ -181,12 +181,19 @@ CFStub_Invoke(
FIXME("Failed to create stream on hglobal\n"); FIXME("Failed to create stream on hglobal\n");
goto getbuffer; goto getbuffer;
} }
hres = CoMarshalInterface(pStm,&iid,ppv,0,NULL,0); hres = IStream_Write(pStm, &ppv, sizeof(ppv), NULL);
IUnknown_Release((IUnknown*)ppv);
if (hres) { if (hres) {
FIXME("CoMarshalInterface failed, %x!\n",hres); ERR("IStream_Write failed, 0x%08x\n", hres);
goto getbuffer; goto getbuffer;
} }
if (ppv) {
hres = CoMarshalInterface(pStm,&iid,ppv,0,NULL,0);
IUnknown_Release(ppv);
if (hres) {
FIXME("CoMarshalInterface failed, %x!\n",hres);
goto getbuffer;
}
}
hres = IStream_Stat(pStm,&ststg,0); hres = IStream_Stat(pStm,&ststg,0);
if (hres) { if (hres) {
FIXME("Stat failed.\n"); FIXME("Stat failed.\n");
...@@ -401,11 +408,16 @@ static HRESULT WINAPI CFProxy_CreateInstance( ...@@ -401,11 +408,16 @@ static HRESULT WINAPI CFProxy_CreateInstance(
IRpcChannelBuffer_FreeBuffer(This->chanbuf,&msg); IRpcChannelBuffer_FreeBuffer(This->chanbuf,&msg);
return hres; return hres;
} }
hres = CoUnmarshalInterface( hres = IStream_Read(pStream, ppv, sizeof(*ppv), NULL);
pStream, if (hres != S_OK)
riid, hres = E_FAIL;
ppv else if (*ppv) {
); hres = CoUnmarshalInterface(
pStream,
riid,
ppv
);
}
IStream_Release(pStream); /* Does GlobalFree hGlobal too. */ IStream_Release(pStream); /* Does GlobalFree hGlobal too. */
IRpcChannelBuffer_FreeBuffer(This->chanbuf,&msg); IRpcChannelBuffer_FreeBuffer(This->chanbuf,&msg);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment