Rob Shearman : rpcrt4: The type referred to by the wire_marshal attribute in server. idl must be a pointer.
Alexandre Julliard
julliard at winehq.org
Tue Oct 14 08:29:59 CDT 2008
Module: wine
Branch: master
Commit: b919443a581610ee1877945bb2caf39b96afd9c3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=b919443a581610ee1877945bb2caf39b96afd9c3
Author: Rob Shearman <robertshearman at gmail.com>
Date: Mon Oct 13 23:36:17 2008 +0100
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 78a8bff..a2d72de 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 26d3373..53ec016 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);
More information about the wine-cvs
mailing list