Module: wine Branch: master Commit: a4b18699ac6739caf0e089167e3e6d247a44f781 URL: http://source.winehq.org/git/wine.git/?a=commit;h=a4b18699ac6739caf0e089167e...
Author: Rob Shearman rob@codeweavers.com Date: Thu Jan 17 12:26:42 2008 +0000
rpcrt4: Only initialise the context handle to NULL in NdrContextHandleUnmarshall if it is an out-only or return one.
Fix the indentation and add tracing of the context handle flags.
---
dlls/rpcrt4/ndr_marshall.c | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/dlls/rpcrt4/ndr_marshall.c b/dlls/rpcrt4/ndr_marshall.c index 0f415b0..888b150 100644 --- a/dlls/rpcrt4/ndr_marshall.c +++ b/dlls/rpcrt4/ndr_marshall.c @@ -6207,6 +6207,7 @@ static unsigned char *WINAPI NdrContextHandleMarshall( ERR("invalid format type %x\n", *pFormat); RpcRaiseException(RPC_S_INTERNAL_ERROR); } + TRACE("flags: 0x%02x\n", pFormat[1]);
if (pFormat[1] & 0x80) NdrClientContextMarshall(pStubMsg, *(NDR_CCONTEXT **)pMemory, FALSE); @@ -6225,16 +6226,22 @@ static unsigned char *WINAPI NdrContextHandleUnmarshall( PFORMAT_STRING pFormat, unsigned char fMustAlloc) { + TRACE("pStubMsg %p, ppMemory %p, pFormat %p, fMustAlloc %s\n", pStubMsg, + ppMemory, pFormat, fMustAlloc ? "TRUE": "FALSE"); + if (*pFormat != RPC_FC_BIND_CONTEXT) { ERR("invalid format type %x\n", *pFormat); RpcRaiseException(RPC_S_INTERNAL_ERROR); } + TRACE("flags: 0x%02x\n", pFormat[1]);
- **(NDR_CCONTEXT **)ppMemory = NULL; - NdrClientContextUnmarshall(pStubMsg, *(NDR_CCONTEXT **)ppMemory, pStubMsg->RpcMsg->Handle); + /* [out]-only or [ret] param */ + if ((pFormat[1] & 0x60) == 0x20) + **(NDR_CCONTEXT **)ppMemory = NULL; + NdrClientContextUnmarshall(pStubMsg, *(NDR_CCONTEXT **)ppMemory, pStubMsg->RpcMsg->Handle);
- return NULL; + return NULL; }
/***********************************************************************