Serialize NULL pointer interfaces correctly.

This commit is contained in:
Marcus Meissner 2005-03-29 13:06:44 +00:00 committed by Alexandre Julliard
parent a4ae750a87
commit 41079866f7
1 changed files with 10 additions and 3 deletions

View File

@ -1,7 +1,7 @@
/*
* TYPELIB Marshaler
*
* Copyright 2002 Marcus Meissner
* Copyright 2002,2005 Marcus Meissner
*
* The olerelay debug channel allows you to see calls marshalled by
* the typelib marshaller. It is not a generic COM relaying system.
@ -169,12 +169,19 @@ _marshal_interface(marshal_state *buf, REFIID riid, LPUNKNOWN pUnk) {
DWORD xsize;
HRESULT hres;
hres = E_FAIL;
if (!pUnk) {
/* this is valid, if for instance we serialize
* a VT_DISPATCH with NULL ptr which apparently
* can happen. S_OK to make sure we continue
* serializing.
*/
ERR("pUnk is NULL?\n");
goto fail;
xsize = 0;
return xbuf_add(buf,(LPBYTE)&xsize,sizeof(xsize));
}
hres = E_FAIL;
TRACE("...%s...\n",debugstr_guid(riid));
hres = IUnknown_QueryInterface(pUnk,riid,(LPVOID*)&newiface);
if (hres) {