Nikolay Sivov : msvcrt: Forward _realloc_crt to realloc.

Alexandre Julliard julliard at winehq.org
Fri Jan 28 12:30:12 CST 2011


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Fri Jan 28 03:21:06 2011 +0300

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 d079728..703a78d 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 3ece44c..c622b0e 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 38cf0fb..52f49c5 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 eeb8842..d4a7262 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();
 }




More information about the wine-cvs mailing list