Commit f687728c authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

rpcrt4: Properly size complex reference pointers.

parent 6b7ccdb7
...@@ -149,6 +149,15 @@ static DWORD calc_arg_size(MIDL_STUB_MESSAGE *pStubMsg, PFORMAT_STRING pFormat) ...@@ -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) ...@@ -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;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment