Alexandre Julliard : ole32/tests: Fix the clipboard format test on Win64.

Alexandre Julliard julliard at winehq.org
Fri May 8 08:06:29 CDT 2009


Module: wine
Branch: master
Commit: 18419dab31d3c3d2f02226354ce78cd73d56f6ec
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=18419dab31d3c3d2f02226354ce78cd73d56f6ec

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri May  8 13:52:05 2009 +0200

ole32/tests: Fix the clipboard format test on Win64.

---

 dlls/ole32/tests/usrmarshal.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/dlls/ole32/tests/usrmarshal.c b/dlls/ole32/tests/usrmarshal.c
index 9dde4d9..3411cc2 100644
--- a/dlls/ole32/tests/usrmarshal.c
+++ b/dlls/ole32/tests/usrmarshal.c
@@ -94,22 +94,27 @@ static void test_marshal_CLIPFORMAT(void)
     MIDL_STUB_MESSAGE stub_msg;
     RPC_MESSAGE rpc_msg;
     unsigned char *buffer;
-    ULONG size;
+    ULONG i, size;
     CLIPFORMAT cf = RegisterClipboardFormatA("MyFormat");
     CLIPFORMAT cf2;
 
     init_user_marshal_cb(&umcb, &stub_msg, &rpc_msg, NULL, 0, MSHCTX_DIFFERENTMACHINE);
     size = CLIPFORMAT_UserSize(&umcb.Flags, 0, &cf);
     ok(size == 8 + sizeof(cf_marshaled) ||
+       broken(size == 12 + sizeof(cf_marshaled)) ||  /* win64 adds 4 extra (unused) bytes */
        broken(size == 8 + sizeof(cf_marshaled) - 2), /* win9x and winnt don't include the '\0' */
               "CLIPFORMAT: Wrong size %d\n", size);
 
     buffer = HeapAlloc(GetProcessHeap(), 0, size);
+    memset( buffer, 0xcc, size );
     init_user_marshal_cb(&umcb, &stub_msg, &rpc_msg, buffer, size, MSHCTX_DIFFERENTMACHINE);
     CLIPFORMAT_UserMarshal(&umcb.Flags, buffer, &cf);
     ok(*(LONG *)(buffer + 0) == WDT_REMOTE_CALL, "CLIPFORMAT: Context should be WDT_REMOTE_CALL instead of 0x%08x\n", *(LONG *)(buffer + 0));
     ok(*(DWORD *)(buffer + 4) == cf, "CLIPFORMAT: Marshaled value should be 0x%04x instead of 0x%04x\n", cf, *(DWORD *)(buffer + 4));
-    ok(!memcmp(buffer + 8, cf_marshaled, size - 8), "Marshaled data differs\n");
+    ok(!memcmp(buffer + 8, cf_marshaled, min( sizeof(cf_marshaled), size-8 )), "Marshaled data differs\n");
+    if (size > sizeof(cf_marshaled) + 8)  /* make sure the extra bytes are not used */
+        for (i = sizeof(cf_marshaled) + 8; i < size; i++)
+            ok( buffer[i] == 0xcc, "buffer offset %u has been set to %x\n", i, buffer[i] );
 
     init_user_marshal_cb(&umcb, &stub_msg, &rpc_msg, buffer, size, MSHCTX_DIFFERENTMACHINE);
     CLIPFORMAT_UserUnmarshal(&umcb.Flags, buffer, &cf2);




More information about the wine-cvs mailing list