Alexandre Julliard : msvcr90/tests: Fix the type info test for 64-bit.
Alexandre Julliard
julliard at winehq.org
Wed Feb 16 11:14:10 CST 2011
Module: wine
Branch: master
Commit: de8dc80c85306e152284bd36c000480831ab4ae7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=de8dc80c85306e152284bd36c000480831ab4ae7
Author: Alexandre Julliard <julliard at winehq.org>
Date: Wed Feb 16 13:59:18 2011 +0100
msvcr90/tests: Fix the type info test for 64-bit.
---
dlls/msvcr90/tests/msvcr90.c | 48 ++++++++++++++++++++++++++---------------
1 files changed, 30 insertions(+), 18 deletions(-)
diff --git a/dlls/msvcr90/tests/msvcr90.c b/dlls/msvcr90/tests/msvcr90.c
index ace9e35..3ae76f1 100644
--- a/dlls/msvcr90/tests/msvcr90.c
+++ b/dlls/msvcr90/tests/msvcr90.c
@@ -87,7 +87,14 @@ typedef struct __type_info
char mangled[16];
} type_info;
-static char* (WINAPI *p_type_info_name_internal_method)(type_info*);
+
+struct __type_info_node
+{
+ void *memPtr;
+ struct __type_info_node* next;
+};
+
+static char* (WINAPI *p_type_info_name_internal_method)(type_info*, struct __type_info_node *);
static void (WINAPI *ptype_info_dtor)(type_info*);
static void* (WINAPI *pEncodePointer)(void *);
@@ -104,6 +111,7 @@ static inline int almost_equal_f(float f1, float f2)
/* thiscall emulation */
/* Emulate a __thiscall */
+#ifdef __i386__
#ifdef _MSC_VER
static inline void* do_call_func1(void *func, void *_this)
{
@@ -155,8 +163,15 @@ static void* do_call_func2(void *func, void *_this, const void* arg)
}
#endif
-#define call_func1(x,y) do_call_func1((void*)x,(void*)y)
-#define call_func2(x,y,z) do_call_func2((void*)x,(void*)y,(void*)z)
+#define call_func1(func,_this) do_call_func1(func,_this)
+#define call_func2(func,_this,a) do_call_func2(func,_this,(const void*)a)
+
+#else
+
+#define call_func1(func,_this) func(_this)
+#define call_func2(func,_this,a) func(_this,a)
+
+#endif /* __i386__ */
static void __cdecl test_invalid_parameter_handler(const wchar_t *expression,
const wchar_t *function, const wchar_t *file,
@@ -863,13 +878,6 @@ if (0)
p_free(mem);
}
-#ifdef __i386__
-
-struct __type_info_node {
- void *memPtr;
- struct __type_info_node* next;
-};
-
static void test_typeinfo(void)
{
static type_info t1 = { NULL, NULL,{'.','?','A','V','t','e','s','t','1','@','@',0,0,0,0,0 } };
@@ -894,11 +902,6 @@ static void test_typeinfo(void)
ok(t1.name && !strcmp(t1.name, "class test1"), "demangled to '%s' for t1\n", t1.name);
call_func1(ptype_info_dtor, &t1);
}
-#else
-static void test_typeinfo(void)
-{
-}
-#endif
START_TEST(msvcr90)
{
@@ -938,9 +941,18 @@ START_TEST(msvcr90)
p_realloc_crt = (void*) GetProcAddress(hcrt, "_realloc_crt");
p_malloc = (void*) GetProcAddress(hcrt, "malloc");
p_free = (void*)GetProcAddress(hcrt, "free");
- p_type_info_name_internal_method = (void*)GetProcAddress(hcrt,
- "?_name_internal_method at type_info@@QBEPBDPAU__type_info_node@@@Z");
- ptype_info_dtor = (void*)GetProcAddress(hcrt, "??1type_info@@UAE at XZ");
+ if (sizeof(void *) == 8)
+ {
+ p_type_info_name_internal_method = (void*)GetProcAddress(hcrt,
+ "?_name_internal_method at type_info@@QEBAPEBDPEAU__type_info_node@@@Z");
+ ptype_info_dtor = (void*)GetProcAddress(hcrt, "??1type_info@@UEAA at XZ");
+ }
+ else
+ {
+ p_type_info_name_internal_method = (void*)GetProcAddress(hcrt,
+ "?_name_internal_method at type_info@@QBEPBDPAU__type_info_node@@@Z");
+ ptype_info_dtor = (void*)GetProcAddress(hcrt, "??1type_info@@UAE at XZ");
+ }
hkernel32 = GetModuleHandleA("kernel32.dll");
pEncodePointer = (void *) GetProcAddress(hkernel32, "EncodePointer");
More information about the wine-cvs
mailing list