Module: wine Branch: master Commit: 40aa4dc459921631dff66989576bc264ee3a3540 URL: http://source.winehq.org/git/wine.git/?a=commit;h=40aa4dc459921631dff6698957...
Author: Piotr Caban piotr@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