Robert Shearman : rpcrt4: Implement NdrComplexStructMemorySize.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon May 15 07:35:12 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 22bf15049c7cbc201c7a8abb00f1b86cd67b5d0b
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=22bf15049c7cbc201c7a8abb00f1b86cd67b5d0b
Author: Robert Shearman <rob at codeweavers.com>
Date: Sat May 13 16:59:50 2006 +0100
rpcrt4: Implement NdrComplexStructMemorySize.
---
dlls/rpcrt4/ndr_marshall.c | 16 +++++++++++++---
1 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/dlls/rpcrt4/ndr_marshall.c b/dlls/rpcrt4/ndr_marshall.c
index 72634b1..43aceb9 100644
--- a/dlls/rpcrt4/ndr_marshall.c
+++ b/dlls/rpcrt4/ndr_marshall.c
@@ -1922,11 +1922,14 @@ void WINAPI NdrComplexStructBufferSize(P
unsigned long WINAPI NdrComplexStructMemorySize(PMIDL_STUB_MESSAGE pStubMsg,
PFORMAT_STRING pFormat)
{
- /* unsigned size = *(LPWORD)(pFormat+2); */
+ unsigned size = *(const WORD*)(pFormat+2);
PFORMAT_STRING conf_array = NULL;
PFORMAT_STRING pointer_desc = NULL;
+ unsigned long saved_memory_size;
- FIXME("(%p,%p): stub\n", pStubMsg, pFormat);
+ TRACE("(%p,%p)\n", pStubMsg, pFormat);
+
+ ALIGN_POINTER(pStubMsg->Buffer, pFormat[1] + 1);
pFormat += 4;
if (*(const WORD*)pFormat) conf_array = pFormat + *(const WORD*)pFormat;
@@ -1934,7 +1937,14 @@ unsigned long WINAPI NdrComplexStructMem
if (*(const WORD*)pFormat) pointer_desc = pFormat + *(const WORD*)pFormat;
pFormat += 2;
- return 0;
+ saved_memory_size = pStubMsg->MemorySize;
+ ComplexStructSize(pStubMsg, pFormat);
+ pStubMsg->MemorySize = saved_memory_size;
+
+ if (conf_array)
+ NdrConformantArrayMemorySize(pStubMsg, conf_array);
+
+ return size;
}
/***********************************************************************
More information about the wine-cvs
mailing list