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.
This commit is contained in:
Rob Shearman 2008-01-17 12:26:42 +00:00 committed by Alexandre Julliard
parent 6ec9e0c77a
commit a4b18699ac

View file

@ -6207,6 +6207,7 @@ static unsigned char *WINAPI NdrContextHandleMarshall(
ERR("invalid format type %x\n", *pFormat); ERR("invalid format type %x\n", *pFormat);
RpcRaiseException(RPC_S_INTERNAL_ERROR); RpcRaiseException(RPC_S_INTERNAL_ERROR);
} }
TRACE("flags: 0x%02x\n", pFormat[1]);
if (pFormat[1] & 0x80) if (pFormat[1] & 0x80)
NdrClientContextMarshall(pStubMsg, *(NDR_CCONTEXT **)pMemory, FALSE); NdrClientContextMarshall(pStubMsg, *(NDR_CCONTEXT **)pMemory, FALSE);
@ -6225,12 +6226,18 @@ static unsigned char *WINAPI NdrContextHandleUnmarshall(
PFORMAT_STRING pFormat, PFORMAT_STRING pFormat,
unsigned char fMustAlloc) 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) if (*pFormat != RPC_FC_BIND_CONTEXT)
{ {
ERR("invalid format type %x\n", *pFormat); ERR("invalid format type %x\n", *pFormat);
RpcRaiseException(RPC_S_INTERNAL_ERROR); RpcRaiseException(RPC_S_INTERNAL_ERROR);
} }
TRACE("flags: 0x%02x\n", pFormat[1]);
/* [out]-only or [ret] param */
if ((pFormat[1] & 0x60) == 0x20)
**(NDR_CCONTEXT **)ppMemory = NULL; **(NDR_CCONTEXT **)ppMemory = NULL;
NdrClientContextUnmarshall(pStubMsg, *(NDR_CCONTEXT **)ppMemory, pStubMsg->RpcMsg->Handle); NdrClientContextUnmarshall(pStubMsg, *(NDR_CCONTEXT **)ppMemory, pStubMsg->RpcMsg->Handle);