Serialize NULL pointer interfaces correctly.
This commit is contained in:
parent
a4ae750a87
commit
41079866f7
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* TYPELIB Marshaler
|
* TYPELIB Marshaler
|
||||||
*
|
*
|
||||||
* Copyright 2002 Marcus Meissner
|
* Copyright 2002,2005 Marcus Meissner
|
||||||
*
|
*
|
||||||
* The olerelay debug channel allows you to see calls marshalled by
|
* The olerelay debug channel allows you to see calls marshalled by
|
||||||
* the typelib marshaller. It is not a generic COM relaying system.
|
* 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;
|
DWORD xsize;
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
|
||||||
hres = E_FAIL;
|
|
||||||
if (!pUnk) {
|
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");
|
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));
|
TRACE("...%s...\n",debugstr_guid(riid));
|
||||||
hres = IUnknown_QueryInterface(pUnk,riid,(LPVOID*)&newiface);
|
hres = IUnknown_QueryInterface(pUnk,riid,(LPVOID*)&newiface);
|
||||||
if (hres) {
|
if (hres) {
|
||||||
|
|
Loading…
Reference in New Issue