Huw Davies : rpcrt4/tests: Add a test for marshalling a pointer to a user type, where the user type is itself a pointer.
Alexandre Julliard
julliard at winehq.org
Fri Feb 4 09:37:17 CST 2011
Module: wine
Branch: master
Commit: 5102d4df8c0c8c7ee7224b32ea9b7b5c80055d02
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5102d4df8c0c8c7ee7224b32ea9b7b5c80055d02
Author: Huw Davies <huw at codeweavers.com>
Date: Fri Feb 4 10:19:18 2011 +0000
rpcrt4/tests: Add a test for marshalling a pointer to a user type, where the user type is itself a pointer.
---
dlls/rpcrt4/tests/server.c | 18 +++++++++++++++++-
dlls/rpcrt4/tests/server.idl | 2 +-
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/dlls/rpcrt4/tests/server.c b/dlls/rpcrt4/tests/server.c
index f07fad4..1764718 100644
--- a/dlls/rpcrt4/tests/server.c
+++ b/dlls/rpcrt4/tests/server.c
@@ -562,6 +562,16 @@ s_hash_bstr(bstr_t b)
}
void
+s_get_a_bstr(bstr_t *b)
+{
+ bstr_t bstr;
+ short str[] = {5, 'W', 'i', 'n', 'e', 0};
+ bstr = HeapAlloc(GetProcessHeap(), 0, sizeof(str));
+ memcpy(bstr, str, sizeof(str));
+ *b = bstr + 1;
+}
+
+void
s_get_name(name_t *name)
{
const char bossman[] = "Jeremy White";
@@ -1119,7 +1129,7 @@ pointer_tests(void)
puints_t pus;
cpuints_t cpus;
short bstr_data[] = { 5, 'H', 'e', 'l', 'l', 'o' };
- bstr_t bstr = &bstr_data[1];
+ bstr_t bstr = &bstr_data[1], bstr2;
name_t name;
void *buffer;
int *pa2;
@@ -1167,6 +1177,12 @@ pointer_tests(void)
ok(hash_bstr(bstr) == s_hash_bstr(bstr), "RPC hash_bstr_data\n");
+ get_a_bstr(&bstr);
+ s_get_a_bstr(&bstr2);
+ ok(!lstrcmpW((LPCWSTR)bstr, (LPCWSTR)bstr2), "bstr mismatch\n");
+ HeapFree(GetProcessHeap(), 0, bstr - 1);
+ HeapFree(GetProcessHeap(), 0, bstr2 - 1);
+
free_list(list);
if (!old_windows_version)
diff --git a/dlls/rpcrt4/tests/server.idl b/dlls/rpcrt4/tests/server.idl
index 89f9930..2605c12 100644
--- a/dlls/rpcrt4/tests/server.idl
+++ b/dlls/rpcrt4/tests/server.idl
@@ -311,7 +311,7 @@ cpp_quote("#endif")
typedef [unique] user_bstr_t *wire_bstr_t;
typedef [wire_marshal(wire_bstr_t)] short *bstr_t;
unsigned hash_bstr(bstr_t s);
-
+ void get_a_bstr([out]bstr_t *s);
typedef struct
{
[string, size_is(size)] char *name;
More information about the wine-cvs
mailing list