rpcrt4: Support sizing of a few more argument types.

This commit is contained in:
Alexandre Julliard 2011-07-29 12:08:47 +02:00
parent 2bdff69733
commit 976cd5c9fe
1 changed files with 10 additions and 0 deletions

View File

@ -150,6 +150,7 @@ static DWORD calc_arg_size(MIDL_STUB_MESSAGE *pStubMsg, PFORMAT_STRING pFormat)
switch(*pFormat) switch(*pFormat)
{ {
case RPC_FC_STRUCT: case RPC_FC_STRUCT:
case RPC_FC_PSTRUCT:
size = *(const WORD*)(pFormat + 2); size = *(const WORD*)(pFormat + 2);
break; break;
case RPC_FC_BOGUS_STRUCT: case RPC_FC_BOGUS_STRUCT:
@ -178,6 +179,15 @@ static DWORD calc_arg_size(MIDL_STUB_MESSAGE *pStubMsg, PFORMAT_STRING pFormat)
size = ComplexStructSize(pStubMsg, pFormat); size = ComplexStructSize(pStubMsg, pFormat);
size *= pStubMsg->MaxCount; size *= pStubMsg->MaxCount;
break; break;
case RPC_FC_USER_MARSHAL:
size = *(const WORD*)(pFormat + 4);
break;
case RPC_FC_CSTRING:
size = *(const WORD*)(pFormat + 2);
break;
case RPC_FC_WSTRING:
size = *(const WORD*)(pFormat + 2) * sizeof(WCHAR);
break;
case RPC_FC_C_CSTRING: case RPC_FC_C_CSTRING:
case RPC_FC_C_WSTRING: case RPC_FC_C_WSTRING:
if (*pFormat == RPC_FC_C_CSTRING) if (*pFormat == RPC_FC_C_CSTRING)