rpcrt4: Properly size complex reference pointers.
This commit is contained in:
parent
6b7ccdb734
commit
f687728c43
|
@ -149,6 +149,15 @@ static DWORD calc_arg_size(MIDL_STUB_MESSAGE *pStubMsg, PFORMAT_STRING pFormat)
|
||||||
DWORD size;
|
DWORD size;
|
||||||
switch(*pFormat)
|
switch(*pFormat)
|
||||||
{
|
{
|
||||||
|
case RPC_FC_RP:
|
||||||
|
if (pFormat[1] & RPC_FC_P_SIMPLEPOINTER)
|
||||||
|
{
|
||||||
|
FIXME("Simple reference pointer (type %#x).\n", pFormat[2]);
|
||||||
|
size = sizeof(void *);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
size = calc_arg_size(pStubMsg, &pFormat[2] + *(WORD *)&pFormat[2]);
|
||||||
|
break;
|
||||||
case RPC_FC_STRUCT:
|
case RPC_FC_STRUCT:
|
||||||
case RPC_FC_PSTRUCT:
|
case RPC_FC_PSTRUCT:
|
||||||
size = *(const WORD*)(pFormat + 2);
|
size = *(const WORD*)(pFormat + 2);
|
||||||
|
@ -202,8 +211,6 @@ static DWORD calc_arg_size(MIDL_STUB_MESSAGE *pStubMsg, PFORMAT_STRING pFormat)
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
FIXME("Unhandled type %02x\n", *pFormat);
|
FIXME("Unhandled type %02x\n", *pFormat);
|
||||||
/* fallthrough */
|
|
||||||
case RPC_FC_RP:
|
|
||||||
size = sizeof(void *);
|
size = sizeof(void *);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue