Rob Shearman : rpcrt4: Add a test for the pointers in [in,out] pointer structs not changing when the pointers aren't NULL.
Alexandre Julliard
julliard at winehq.org
Fri Nov 2 08:10:27 CDT 2007
Module: wine
Branch: master
Commit: 18c16a802741eaacd14a1f98b3862b1e2795e8a2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=18c16a802741eaacd14a1f98b3862b1e2795e8a2
Author: Rob Shearman <rob at codeweavers.com>
Date: Thu Nov 1 22:04:43 2007 +0000
rpcrt4: Add a test for the pointers in [in,out] pointer structs not changing when the pointers aren't NULL.
---
dlls/rpcrt4/tests/server.c | 19 +++++++++++++++++++
dlls/rpcrt4/tests/server.idl | 7 +++++++
2 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/dlls/rpcrt4/tests/server.c b/dlls/rpcrt4/tests/server.c
index d0f4eef..79a0e32 100644
--- a/dlls/rpcrt4/tests/server.c
+++ b/dlls/rpcrt4/tests/server.c
@@ -472,6 +472,16 @@ s_hash_bstr(bstr_t b)
}
void
+s_get_name(name_t *name)
+{
+ const char bossman[] = "Jeremy White";
+ memcpy(name->name, bossman, min(name->size, sizeof(bossman)));
+ /* ensure nul-termination */
+ if (name->size < sizeof(bossman))
+ name->name[name->size - 1] = 0;
+}
+
+void
s_stop(void)
{
ok(RPC_S_OK == RpcMgmtStopServerListening(NULL), "RpcMgmtStopServerListening\n");
@@ -800,6 +810,8 @@ pointer_tests(void)
cpuints_t cpus;
short bstr_data[] = { 5, 'H', 'e', 'l', 'l', 'o' };
bstr_t bstr = &bstr_data[1];
+ name_t name;
+ void *buffer;
ok(test_list_length(list) == 3, "RPC test_list_length\n");
ok(square_puint(p1) == 121, "RPC square_puint\n");
@@ -843,6 +855,13 @@ pointer_tests(void)
ok(hash_bstr(bstr) == s_hash_bstr(bstr), "RPC hash_bstr_data\n");
free_list(list);
+
+ name.size = 10;
+ name.name = buffer = HeapAlloc(GetProcessHeap(), 0, name.size);
+ get_name(&name);
+ todo_wine
+ ok(name.name == buffer, "[in,out] pointer should have stayed as %p but instead changed to %p\n", name.name, buffer);
+ HeapFree(GetProcessHeap(), 0, name.name);
}
static int
diff --git a/dlls/rpcrt4/tests/server.idl b/dlls/rpcrt4/tests/server.idl
index fa1ea15..15402ee 100644
--- a/dlls/rpcrt4/tests/server.idl
+++ b/dlls/rpcrt4/tests/server.idl
@@ -290,5 +290,12 @@ cpp_quote("#endif")
typedef [wire_marshal(wire_bstr_t)] short *bstr_t;
unsigned hash_bstr(bstr_t s);
+ typedef struct
+ {
+ [string, size_is(size)] char *name;
+ unsigned int size;
+ } name_t;
+ void get_name([in,out] name_t *name);
+
void stop(void);
}
More information about the wine-cvs
mailing list