Module: wine Branch: master Commit: c452249e0050a6297ff0ed87c550044d341c014b URL: http://source.winehq.org/git/wine.git/?a=commit;h=c452249e0050a6297ff0ed87c5...
Author: Piotr Caban piotr@codeweavers.com Date: Thu Mar 25 11:06:29 2010 +0100
msvcr90: Implement _encode_pointer and _decode_pointer.
---
configure | 4 ++-- configure.ac | 4 ++-- dlls/msvcr80/Makefile.in | 3 +-- dlls/msvcr80/msvcr80.spec | 4 ++-- dlls/msvcr90/Makefile.in | 1 - dlls/msvcr90/msvcr90.c | 21 +++++++++++++++++++++ dlls/msvcr90/msvcr90.spec | 4 ++-- dlls/msvcr90/tests/msvcr90.c | 26 +++++++++++++++++++++++++- 8 files changed, 55 insertions(+), 12 deletions(-)
diff --git a/configure b/configure index ed41bb5..60dc4ab 100755 --- a/configure +++ b/configure @@ -14377,8 +14377,8 @@ wine_fn_config_test dlls/mstask/tests mstask_test wine_fn_config_dll msvcirt enable_msvcirt wine_fn_config_dll msvcr70 enable_msvcr70 msvcr70 wine_fn_config_dll msvcr71 enable_msvcr71 msvcr71 -wine_fn_config_dll msvcr80 enable_msvcr80 msvcr80 -wine_fn_config_dll msvcr90 enable_msvcr90 msvcr90 +wine_fn_config_dll msvcr80 enable_msvcr80 +wine_fn_config_dll msvcr90 enable_msvcr90 wine_fn_config_test dlls/msvcr90/tests msvcr90_test wine_fn_config_dll msvcrt enable_msvcrt msvcrt wine_fn_config_test dlls/msvcrt/tests msvcrt_test diff --git a/configure.ac b/configure.ac index 31c7170..fe11a04 100644 --- a/configure.ac +++ b/configure.ac @@ -2398,8 +2398,8 @@ WINE_CONFIG_TEST(dlls/mstask/tests) WINE_CONFIG_DLL(msvcirt) WINE_CONFIG_DLL(msvcr70,,[msvcr70]) WINE_CONFIG_DLL(msvcr71,,[msvcr71]) -WINE_CONFIG_DLL(msvcr80,,[msvcr80]) -WINE_CONFIG_DLL(msvcr90,,[msvcr90]) +WINE_CONFIG_DLL(msvcr80) +WINE_CONFIG_DLL(msvcr90) WINE_CONFIG_TEST(dlls/msvcr90/tests) WINE_CONFIG_DLL(msvcrt,,[msvcrt]) WINE_CONFIG_TEST(dlls/msvcrt/tests) diff --git a/dlls/msvcr80/Makefile.in b/dlls/msvcr80/Makefile.in index 31dae6a..a448e41 100644 --- a/dlls/msvcr80/Makefile.in +++ b/dlls/msvcr80/Makefile.in @@ -3,8 +3,7 @@ TOPOBJDIR = ../.. SRCDIR = @srcdir@ VPATH = @srcdir@ MODULE = msvcr80.dll -IMPORTLIB = msvcr80 -IMPORTS = msvcrt msvcr90 kernel32 +IMPORTS = msvcrt kernel32
C_SRCS = \ msvcr80.c diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 7c1e100..13a7fa1 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -360,7 +360,7 @@ @ stub _cwscanf_s @ stub _cwscanf_s_l @ extern _daylight msvcrt._daylight -@ stub _decode_pointer +@ cdecl _decode_pointer(ptr) msvcr90._decode_pointer @ cdecl _difftime32(long long) msvcrt._difftime32 @ cdecl _difftime64(long long) msvcrt._difftime64 @ stub _dosmaperr @@ -370,7 +370,7 @@ @ stub _dupenv_s @ cdecl _ecvt(double long ptr ptr) msvcrt._ecvt @ stub _ecvt_s -@ stub _encode_pointer +@ cdecl _encode_pointer(ptr) msvcr90._encode_pointer @ stub _encoded_null @ cdecl _endthread() msvcrt._endthread @ cdecl _endthreadex(long) msvcrt._endthreadex diff --git a/dlls/msvcr90/Makefile.in b/dlls/msvcr90/Makefile.in index 029e2c0..613edab 100644 --- a/dlls/msvcr90/Makefile.in +++ b/dlls/msvcr90/Makefile.in @@ -3,7 +3,6 @@ TOPOBJDIR = ../.. SRCDIR = @srcdir@ VPATH = @srcdir@ MODULE = msvcr90.dll -IMPORTLIB = msvcr90 IMPORTS = msvcrt kernel32
C_SRCS = \ diff --git a/dlls/msvcr90/msvcr90.c b/dlls/msvcr90/msvcr90.c index e7baa6f..97d0921 100644 --- a/dlls/msvcr90/msvcr90.c +++ b/dlls/msvcr90/msvcr90.c @@ -44,6 +44,27 @@ BOOL WINAPI DllMain(HINSTANCE hdll, DWORD reason, LPVOID reserved) return TRUE; }
+/********************************************************************* + * _decode_pointer (MSVCR90.@) + * + * cdecl version of DecodePointer + * + */ +void * CDECL MSVCR90_decode_pointer(void * ptr) +{ + return DecodePointer(ptr); +} + +/********************************************************************* + * _encode_pointer (MSVCR90.@) + * + * cdecl version of EncodePointer + * + */ +void * CDECL MSVCR90_encode_pointer(void * ptr) +{ + return EncodePointer(ptr); +}
/********************************************************************* * _initterm_e (MSVCR90.@) diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index f95f92b..8c3138b 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -352,7 +352,7 @@ @ stub _cwscanf_s @ stub _cwscanf_s_l @ extern _daylight msvcrt._daylight -@ stub _decode_pointer +@ cdecl _decode_pointer(ptr) MSVCR90_decode_pointer @ cdecl _difftime32(long long) msvcrt._difftime32 @ cdecl _difftime64(long long) msvcrt._difftime64 @ stub _dosmaperr @@ -362,7 +362,7 @@ @ stub _dupenv_s @ cdecl _ecvt(double long ptr ptr) msvcrt._ecvt @ stub _ecvt_s -@ stub _encode_pointer +@ cdecl _encode_pointer(ptr) MSVCR90_encode_pointer @ stub _encoded_null @ cdecl _endthread() msvcrt._endthread @ cdecl _endthreadex(long) msvcrt._endthreadex diff --git a/dlls/msvcr90/tests/msvcr90.c b/dlls/msvcr90/tests/msvcr90.c index ddfd781..d8b8407 100644 --- a/dlls/msvcr90/tests/msvcr90.c +++ b/dlls/msvcr90/tests/msvcr90.c @@ -27,6 +27,8 @@
typedef int (__cdecl *_INITTERM_E_FN)(void); static int (__cdecl *p_initterm_e)(_INITTERM_E_FN *table, _INITTERM_E_FN *end); +static void* (__cdecl *p_encode_pointer)(void *); +static void* (__cdecl *p_decode_pointer)(void *); int cb_called[4];
/* ########## */ @@ -130,6 +132,26 @@ static void test__initterm_e(void)
}
+static void test__encode_pointer(void) +{ + void *ptr, *res; + + if(!p_encode_pointer || !p_decode_pointer) { + win_skip("_encode_pointer or _decode_pointer not found\n"); + return; + } + + ptr = (void*)0xdeadbeef; + res = p_encode_pointer(ptr); + res = p_decode_pointer(res); + ok(res == ptr, "Pointers are different after encoding and decoding\n"); + + ptr = p_encode_pointer(p_encode_pointer); + res = EncodePointer(p_encode_pointer); + ok(ptr == res, "_encode_pointer produced different result than EncodePointer\n"); + ok(p_decode_pointer(ptr) == p_encode_pointer, "Error decoding pointer\n"); +} + /* ########## */
START_TEST(msvcr90) @@ -144,7 +166,9 @@ START_TEST(msvcr90) }
p_initterm_e = (void *) GetProcAddress(hcrt, "_initterm_e"); + p_encode_pointer = (void *) GetProcAddress(hcrt, "_encode_pointer"); + p_decode_pointer = (void *) GetProcAddress(hcrt, "_decode_pointer");
test__initterm_e(); - + test__encode_pointer(); }