From b919443a581610ee1877945bb2caf39b96afd9c3 Mon Sep 17 00:00:00 2001 From: Rob Shearman Date: Mon, 13 Oct 2008 23:36:17 +0100 Subject: [PATCH] rpcrt4: The type referred to by the wire_marshal attribute in server.idl must be a pointer. Therefore, declare the structure as user_bstr_t and make wire_bstr_t be a typedef to a pointer of this type. --- dlls/rpcrt4/tests/server.c | 10 +++++----- dlls/rpcrt4/tests/server.idl | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/dlls/rpcrt4/tests/server.c b/dlls/rpcrt4/tests/server.c index 78a8bffb7f2..a2d72de90f1 100644 --- a/dlls/rpcrt4/tests/server.c +++ b/dlls/rpcrt4/tests/server.c @@ -990,27 +990,27 @@ us_t_UserFree(ULONG *flags, us_t *pus) ULONG __RPC_USER bstr_t_UserSize(ULONG *flags, ULONG start, bstr_t *b) { - return start + FIELD_OFFSET(wire_bstr_t, data[(*b)[-1]]); + return start + FIELD_OFFSET(user_bstr_t, data[(*b)[-1]]); } unsigned char * __RPC_USER bstr_t_UserMarshal(ULONG *flags, unsigned char *buffer, bstr_t *b) { - wire_bstr_t *wb = (wire_bstr_t *) buffer; + wire_bstr_t wb = (wire_bstr_t) buffer; wb->n = (*b)[-1]; memcpy(&wb->data, *b, wb->n * sizeof wb->data[0]); - return buffer + FIELD_OFFSET(wire_bstr_t, data[wb->n]); + return buffer + FIELD_OFFSET(user_bstr_t, data[wb->n]); } unsigned char * __RPC_USER bstr_t_UserUnmarshal(ULONG *flags, unsigned char *buffer, bstr_t *b) { - wire_bstr_t *wb = (wire_bstr_t *) buffer; + wire_bstr_t wb = (wire_bstr_t) buffer; short *data = HeapAlloc(GetProcessHeap(), 0, (wb->n + 1) * sizeof *data); data[0] = wb->n; memcpy(&data[1], wb->data, wb->n * sizeof data[1]); *b = &data[1]; - return buffer + FIELD_OFFSET(wire_bstr_t, data[wb->n]); + return buffer + FIELD_OFFSET(user_bstr_t, data[wb->n]); } void __RPC_USER diff --git a/dlls/rpcrt4/tests/server.idl b/dlls/rpcrt4/tests/server.idl index 26d337304f9..53ec01627ce 100644 --- a/dlls/rpcrt4/tests/server.idl +++ b/dlls/rpcrt4/tests/server.idl @@ -299,8 +299,9 @@ cpp_quote("#endif") { short n; [size_is(n)] short data[]; - } wire_bstr_t; + } user_bstr_t; + typedef [unique] user_bstr_t *wire_bstr_t; typedef [wire_marshal(wire_bstr_t)] short *bstr_t; unsigned hash_bstr(bstr_t s); -- 2.11.4.GIT