From e0fbe100b8edeef91cef90b6203ad718e27cfafb Mon Sep 17 00:00:00 2001 From: Jason Filby Date: Fri, 21 Feb 2003 21:50:04 +0000 Subject: [PATCH] New and delete operators svn path=/trunk/; revision=4188 --- reactos/lib/msvcrt/msvcrt.def | 8 +++++--- reactos/lib/msvcrt/stdlib/malloc.c | 24 +++++++++++++++++++++++- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/reactos/lib/msvcrt/msvcrt.def b/reactos/lib/msvcrt/msvcrt.def index 5722a566edb..064c5c9e692 100644 --- a/reactos/lib/msvcrt/msvcrt.def +++ b/reactos/lib/msvcrt/msvcrt.def @@ -1,4 +1,4 @@ -; $Id: msvcrt.def,v 1.17 2002/12/26 17:26:41 robd Exp $ +; $Id: msvcrt.def,v 1.18 2003/02/21 21:50:04 jfilby Exp $ ; ; ReactOS MSVCRT Compatibility Library ; @@ -22,8 +22,10 @@ EXPORTS ; ??1bad_typeid@@UAE@XZ ; ??1exception@@UAE@XZ ; ??1type_info@@UAE@XZ -; ??2@YAPAXI@Z -; ??3@YAXPAX@Z +??2@YAPAXI@Z=MSVCRT_operator_new +??_U@YAPAXI@Z=MSVCRT_operator_new +??3@YAXPAX@Z=MSVCRT_operator_delete +??_V@YAXPAX@Z=MSVCRT_operator_delete ; ??4__non_rtti_object@@QAEAAV0@ABV0@@Z ; ??4bad_cast@@QAEAAV0@ABV0@@Z ; ??4bad_typeid@@QAEAAV0@ABV0@@Z diff --git a/reactos/lib/msvcrt/stdlib/malloc.c b/reactos/lib/msvcrt/stdlib/malloc.c index 83532674845..6a0d9beb0f1 100644 --- a/reactos/lib/msvcrt/stdlib/malloc.c +++ b/reactos/lib/msvcrt/stdlib/malloc.c @@ -3,6 +3,28 @@ extern HANDLE hHeap; +typedef void (*MSVCRT_new_handler_func)(unsigned long size); +static MSVCRT_new_handler_func MSVCRT_new_handler; + +/* ??2@YAPAXI@Z (MSVCRT.@) */ +void* MSVCRT_operator_new(unsigned long size) +{ + void *retval = HeapAlloc(GetProcessHeap(), 0, size); + +/* FIXME: LOCK_HEAP; */ + if(!retval && MSVCRT_new_handler) + (*MSVCRT_new_handler)(size); +/* FIXME: UNLOCK_HEAP; */ + + return retval; +} + +/* ??3@YAXPAX@Z (MSVCRT.@) */ +void MSVCRT_operator_delete(void *mem) +{ + HeapFree(GetProcessHeap(), 0, mem); +} + void* malloc(size_t _size) { return HeapAlloc(hHeap, HEAP_ZERO_MEMORY, _size); @@ -19,6 +41,6 @@ void* calloc(size_t _nmemb, size_t _size) } void* realloc(void* _ptr, size_t _size) -{ +{ return HeapReAlloc(hHeap, 0, _ptr, _size); }