Module: wine Branch: refs/heads/master Commit: f4de78babebd9694e90d0c1ab400e68daed48eff URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=f4de78babebd9694e90d0c1a...
Author: Robert Shearman rob@codeweavers.com Date: Thu Apr 20 11:41:45 2006 +0100
rpcrt4: Correctly fill in StackTop for stubless clients/servers.
Correctly fill in StackTop for stubless clients/servers so that conformance for top-level parameters works.
---
dlls/rpcrt4/ndr_stubless.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/dlls/rpcrt4/ndr_stubless.c b/dlls/rpcrt4/ndr_stubless.c index 2563f2c..a7f0b93 100644 --- a/dlls/rpcrt4/ndr_stubless.c +++ b/dlls/rpcrt4/ndr_stubless.c @@ -585,6 +585,8 @@ #else #endif
stubMsg.BufferLength = 0; + /* needed for conformance of top-level objects */ + stubMsg.StackTop = *(unsigned char **)args;
/* store the RPC flags away */ if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_RPCFLAGS) @@ -1138,7 +1140,6 @@ #endif stubMsg.fHasNewCorrDesc = TRUE; }
- /* convert strings, floating point values and endianess into our * preferred format */ if ((pRpcMsg->DataRepresentation & 0x0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION) @@ -1148,8 +1149,8 @@ #endif
TRACE("allocating memory for stack of size %x\n", stack_size);
- args = HeapAlloc(GetProcessHeap(), 0, stack_size); - ZeroMemory(args, stack_size); + args = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, stack_size); + stubMsg.StackTop = args; /* used by conformance of top-level objects */
/* add the implicit This pointer as the first arg to the function if we * are calling an object method */