Rob Shearman : rpcrt4: Only initialise the context handle to NULL in NdrContextHandleUnmarshall if it is an out-only or return one .
Alexandre Julliard
julliard at winehq.org
Thu Jan 17 08:48:35 CST 2008
Module: wine
Branch: master
Commit: a4b18699ac6739caf0e089167e3e6d247a44f781
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a4b18699ac6739caf0e089167e3e6d247a44f781
Author: Rob Shearman <rob at 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;
}
/***********************************************************************
More information about the wine-cvs
mailing list