From 6c42e742b3decb38733f0b42b7c072ac377a242b Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Tue, 10 Apr 2018 02:19:13 +0000 Subject: [PATCH] msvcrtd: Forward operator_new_dbg to msvcrt. Signed-off-by: Alistair Leslie-Hughes Signed-off-by: Piotr Caban Signed-off-by: Alexandre Julliard --- dlls/msvcrtd/debug.c | 39 -------------------------------------- dlls/msvcrtd/msvcrtd.spec | 4 ++-- dlls/msvcrtd/tests/debug.c | 13 ++++++++++++- 3 files changed, 14 insertions(+), 42 deletions(-) diff --git a/dlls/msvcrtd/debug.c b/dlls/msvcrtd/debug.c index b8496526ae2..df7a8920b3f 100644 --- a/dlls/msvcrtd/debug.c +++ b/dlls/msvcrtd/debug.c @@ -25,8 +25,6 @@ #define _DEBUG #include "crtdbg.h" -WINE_DEFAULT_DEBUG_CHANNEL(msvcrt); - int _crtAssertBusy = -1; int _crtBreakAlloc = -1; int _crtDbgFlag = 0; @@ -39,43 +37,6 @@ typedef unsigned long MSVCRT_size_t; extern int _callnewh(MSVCRT_size_t); -/********************************************************************* - * ??2@YAPAXIHPBDH@Z (MSVCRTD.@) - */ -void * CDECL MSVCRTD_operator_new_dbg(MSVCRT_size_t nSize, int nBlockUse, - const char *szFileName, int nLine) -{ - void *retval = NULL; - - TRACE("(%lu, %d, '%s', %d)\n", nSize, nBlockUse, szFileName, nLine); - - switch(_BLOCK_TYPE(nBlockUse)) - { - case _NORMAL_BLOCK: - break; - case _CLIENT_BLOCK: - FIXME("Unimplemented case for nBlockUse = _CLIENT_BLOCK\n"); - return NULL; - case _FREE_BLOCK: - FIXME("Native code throws an exception here\n"); - return NULL; - case _CRT_BLOCK: - case _IGNORE_BLOCK: - ERR("Not allowed nBlockUse value: %d\n", _BLOCK_TYPE(nBlockUse)); - return NULL; - default: - ERR("Unknown nBlockUse value: %d\n", _BLOCK_TYPE(nBlockUse)); - return NULL; - } - - retval = HeapAlloc(GetProcessHeap(), 0, nSize); - - if (!retval) - _callnewh(nSize); - - return retval; -} - /********************************************************************* * _CrtSetDumpClient (MSVCRTD.@) */ diff --git a/dlls/msvcrtd/msvcrtd.spec b/dlls/msvcrtd/msvcrtd.spec index 15066c310f8..33c6e9934e1 100644 --- a/dlls/msvcrtd/msvcrtd.spec +++ b/dlls/msvcrtd/msvcrtd.spec @@ -31,8 +31,8 @@ @ cdecl -arch=win64 ??1type_info@@UEAA@XZ(ptr) msvcrt.??1type_info@@UEAA@XZ @ cdecl -arch=win32 ??2@YAPAXI@Z(long) msvcrt.??2@YAPAXI@Z @ cdecl -arch=win64 ??2@YAPEAX_K@Z(long) msvcrt.??2@YAPEAX_K@Z -@ cdecl -arch=win32 ??2@YAPAXIHPBDH@Z(long long str long) MSVCRTD_operator_new_dbg -@ cdecl -arch=win64 ??2@YAPEAX_KHPEBDH@Z(long long str long) MSVCRTD_operator_new_dbg +@ cdecl -arch=win32 ??2@YAPAXIHPBDH@Z(long long str long) msvcrt.??2@YAPAXIHPBDH@Z +@ cdecl -arch=win64 ??2@YAPEAX_KHPEBDH@Z(long long str long) msvcrt.??2@YAPEAX_KHPEBDH@Z @ cdecl -arch=win32 ??3@YAXPAX@Z(ptr) msvcrt.??3@YAXPAX@Z @ cdecl -arch=win64 ??3@YAXPEAX@Z(ptr) msvcrt.??3@YAXPEAX@Z @ thiscall -arch=i386 ??4__non_rtti_object@@QAEAAV0@ABV0@@Z(ptr ptr) msvcrt.??4__non_rtti_object@@QAEAAV0@ABV0@@Z diff --git a/dlls/msvcrtd/tests/debug.c b/dlls/msvcrtd/tests/debug.c index 9055db13828..4af4c815b38 100644 --- a/dlls/msvcrtd/tests/debug.c +++ b/dlls/msvcrtd/tests/debug.c @@ -31,6 +31,7 @@ /**********************************************************************/ static void * (__cdecl *pMSVCRTD_operator_new_dbg)(size_t, int, const char *, int) = NULL; +static void * (__cdecl *pMSVCRTD_operator_delete)(void *) = NULL; /* Some exports are only available in later versions */ #define SETNOFAIL(x,y) x = (void*)GetProcAddress(hModule,y) @@ -46,9 +47,15 @@ static BOOL init_functions(void) } if (sizeof(void *) > sizeof(int)) /* 64-bit has a different mangled name */ + { SET(pMSVCRTD_operator_new_dbg, "??2@YAPEAX_KHPEBDH@Z"); + SET(pMSVCRTD_operator_delete, "??3@YAXPEAX@Z"); + } else + { SET(pMSVCRTD_operator_new_dbg, "??2@YAPAXIHPBDH@Z"); + SET(pMSVCRTD_operator_delete, "??3@YAXPAX@Z"); + } if (pMSVCRTD_operator_new_dbg == NULL) return FALSE; @@ -64,7 +71,11 @@ static void test_new(void) mem = pMSVCRTD_operator_new_dbg(42, _NORMAL_BLOCK, __FILE__, __LINE__); ok(mem != NULL, "memory not allocated\n"); - HeapFree(GetProcessHeap(), 0, mem); + pMSVCRTD_operator_delete(mem); + + mem = pMSVCRTD_operator_new_dbg(42, _CRT_BLOCK, __FILE__, __LINE__); + ok(mem != NULL, "memory not allocated\n"); + pMSVCRTD_operator_delete(mem); } /**********************************************************************/