Piotr Caban : msvcr90: Added _recalloc implementation.

Alexandre Julliard julliard at winehq.org
Mon Apr 26 13:59:27 CDT 2010


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Mon Apr 26 12:33:02 2010 +0200

msvcr90: Added _recalloc implementation.

---

 dlls/msvcr80/msvcr80.spec |    2 +-
 dlls/msvcr90/msvcr90.c    |   27 +++++++++++++++++++++++++++
 dlls/msvcr90/msvcr90.spec |    2 +-
 3 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index 53cef75..0c69621 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -837,7 +837,7 @@
 @ stub _pwctype
 @ cdecl _read(long ptr long) msvcrt._read
 @ stub _realloc_crt
-@ stub _recalloc
+@ cdecl _recalloc(ptr long long) msvcr90._recalloc
 @ stub _recalloc_crt
 @ stub _resetstkoflw
 @ cdecl _rmdir(str) msvcrt._rmdir
diff --git a/dlls/msvcr90/msvcr90.c b/dlls/msvcr90/msvcr90.c
index 9d03767..eaf9d66 100644
--- a/dlls/msvcr90/msvcr90.c
+++ b/dlls/msvcr90/msvcr90.c
@@ -21,6 +21,8 @@
 #include <stdarg.h>
 
 #include "stdlib.h"
+#include "errno.h"
+#include "malloc.h"
 #include "windef.h"
 #include "winbase.h"
 #include "wine/debug.h"
@@ -131,3 +133,28 @@ void CDECL __clean_type_info_names_internal(void *p)
 {
     FIXME("(%p) stub\n", p);
 }
+
+/*********************************************************************
+ * _recalloc (MSVCR90.@)
+ */
+void* CDECL _recalloc(void* mem, size_t num, size_t size)
+{
+    size_t old_size;
+    void *ret;
+
+    if(!mem)
+        return calloc(num, size);
+
+    size = num*size;
+    old_size = _msize(mem);
+
+    ret = realloc(mem, size);
+    if(!ret) {
+        *_errno() = ENOMEM;
+        return NULL;
+    }
+
+    if(size>old_size)
+        memset((BYTE*)mem+old_size, 0, size-old_size);
+    return ret;
+}
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index d8f8e04..3bfd1b8 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -823,7 +823,7 @@
 @ stub _pwctype
 @ cdecl _read(long ptr long) msvcrt._read
 @ stub _realloc_crt
-@ stub _recalloc
+@ cdecl _recalloc(ptr long long)
 @ stub _recalloc_crt
 @ stub _resetstkoflw
 @ cdecl _rmdir(str) msvcrt._rmdir




More information about the wine-cvs mailing list