New and delete operators

svn path=/trunk/; revision=4188
This commit is contained in:
Jason Filby
2003-02-21 21:50:04 +00:00
parent 95cb8daf2a
commit e0fbe100b8
2 changed files with 28 additions and 4 deletions
+5 -3
View File
@@ -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
+23 -1
View File
@@ -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);
}