From 81c4f2a25f5532c60fddc1422fb93846464e8ea6 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Fri, 28 Jan 2011 03:21:06 +0300 Subject: [PATCH] msvcrt: Forward _realloc_crt to realloc. --- dlls/msvcr100/msvcr100.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcr90/tests/msvcr90.c | 37 ++++++++++++++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index d079728d253..703a78d17d8 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1042,7 +1042,7 @@ @ cdecl _putws(wstr) msvcrt._putws @ stub _pwctype @ cdecl _read(long ptr long) msvcrt._read -@ stub _realloc_crt +@ cdecl _realloc_crt(ptr long) msvcrt.realloc @ cdecl _recalloc(ptr long long) msvcr90._recalloc @ stub _recalloc_crt @ stub _resetstkoflw diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 3ece44cef7f..c622b0e9918 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -890,7 +890,7 @@ @ cdecl _putws(wstr) msvcrt._putws @ stub _pwctype @ cdecl _read(long ptr long) msvcrt._read -@ stub _realloc_crt +@ cdecl _realloc_crt(ptr long) msvcrt.realloc @ cdecl _recalloc(ptr long long) msvcr90._recalloc @ stub _recalloc_crt @ stub _resetstkoflw diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 38cf0fb7dc5..52f49c52c30 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -876,7 +876,7 @@ @ cdecl _putws(wstr) msvcrt._putws @ stub _pwctype @ cdecl _read(long ptr long) msvcrt._read -@ stub _realloc_crt +@ cdecl _realloc_crt(ptr long) msvcrt.realloc @ cdecl _recalloc(ptr long long) @ stub _recalloc_crt @ stub _resetstkoflw diff --git a/dlls/msvcr90/tests/msvcr90.c b/dlls/msvcr90/tests/msvcr90.c index eeb884273e2..d4a7262c9dc 100644 --- a/dlls/msvcr90/tests/msvcr90.c +++ b/dlls/msvcr90/tests/msvcr90.c @@ -75,6 +75,9 @@ static int (__cdecl *p_atoflt)(_CRT_FLOAT *, char *); static unsigned int (__cdecl *p_set_abort_behavior)(unsigned int, unsigned int); static int (__cdecl *p_sopen_s)(int*, const char*, int, int, int); static int (__cdecl *p_wsopen_s)(int*, const wchar_t*, int, int, int); +static void* (__cdecl *p_realloc_crt)(void*, size_t); +static void* (__cdecl *p_malloc)(size_t); +static void (__cdecl *p_free)(void*); static void* (WINAPI *pEncodePointer)(void *); @@ -753,6 +756,36 @@ static void test__wsopen_s(void) ok(fd == -1, "got %d\n", fd); } +static void test__realloc_crt(void) +{ + void *mem; + + if(!p_realloc_crt) + { + win_skip("_realloc_crt not found\n"); + return; + } + +if (0) +{ + /* crashes on some systems starting Vista */ + mem = p_realloc_crt(NULL, 10); +} + + mem = p_malloc(10); + ok(mem != NULL, "memory not allocated\n"); + + mem = p_realloc_crt(mem, 20); + ok(mem != NULL, "memory not reallocated\n"); + + mem = p_realloc_crt(mem, 0); + ok(mem == NULL, "memory not freed\n"); + + mem = p_realloc_crt(NULL, 0); + ok(mem != NULL, "memory not (re)allocated for size 0\n"); + p_free(mem); +} + START_TEST(msvcr90) { HMODULE hcrt; @@ -788,6 +821,9 @@ START_TEST(msvcr90) p_set_abort_behavior = (void *) GetProcAddress(hcrt, "_set_abort_behavior"); p_sopen_s = (void*) GetProcAddress(hcrt, "_sopen_s"); p_wsopen_s = (void*) GetProcAddress(hcrt, "_wsopen_s"); + p_realloc_crt = (void*) GetProcAddress(hcrt, "_realloc_crt"); + p_malloc = (void*) GetProcAddress(hcrt, "malloc"); + p_free = (void*)GetProcAddress(hcrt, "free"); hkernel32 = GetModuleHandleA("kernel32.dll"); pEncodePointer = (void *) GetProcAddress(hkernel32, "EncodePointer"); @@ -804,4 +840,5 @@ START_TEST(msvcr90) test__set_abort_behavior(); test__sopen_s(); test__wsopen_s(); + test__realloc_crt(); }