Commit 6c42e742 authored by Alistair Leslie-Hughes's avatar Alistair Leslie-Hughes Committed by Alexandre Julliard

msvcrtd: Forward operator_new_dbg to msvcrt.

parent 13a53aa9
...@@ -25,8 +25,6 @@ ...@@ -25,8 +25,6 @@
#define _DEBUG #define _DEBUG
#include "crtdbg.h" #include "crtdbg.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
int _crtAssertBusy = -1; int _crtAssertBusy = -1;
int _crtBreakAlloc = -1; int _crtBreakAlloc = -1;
int _crtDbgFlag = 0; int _crtDbgFlag = 0;
...@@ -40,43 +38,6 @@ typedef unsigned long MSVCRT_size_t; ...@@ -40,43 +38,6 @@ typedef unsigned long MSVCRT_size_t;
extern int _callnewh(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.@) * _CrtSetDumpClient (MSVCRTD.@)
*/ */
void * CDECL _CrtSetDumpClient(void *dumpClient) void * CDECL _CrtSetDumpClient(void *dumpClient)
......
...@@ -31,8 +31,8 @@ ...@@ -31,8 +31,8 @@
@ cdecl -arch=win64 ??1type_info@@UEAA@XZ(ptr) msvcrt.??1type_info@@UEAA@XZ @ 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=win32 ??2@YAPAXI@Z(long) msvcrt.??2@YAPAXI@Z
@ cdecl -arch=win64 ??2@YAPEAX_K@Z(long) msvcrt.??2@YAPEAX_K@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=win32 ??2@YAPAXIHPBDH@Z(long long str long) msvcrt.??2@YAPAXIHPBDH@Z
@ cdecl -arch=win64 ??2@YAPEAX_KHPEBDH@Z(long long str long) MSVCRTD_operator_new_dbg @ 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=win32 ??3@YAXPAX@Z(ptr) msvcrt.??3@YAXPAX@Z
@ cdecl -arch=win64 ??3@YAXPEAX@Z(ptr) msvcrt.??3@YAXPEAX@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 @ thiscall -arch=i386 ??4__non_rtti_object@@QAEAAV0@ABV0@@Z(ptr ptr) msvcrt.??4__non_rtti_object@@QAEAAV0@ABV0@@Z
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
/**********************************************************************/ /**********************************************************************/
static void * (__cdecl *pMSVCRTD_operator_new_dbg)(size_t, int, const char *, int) = NULL; 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 */ /* Some exports are only available in later versions */
#define SETNOFAIL(x,y) x = (void*)GetProcAddress(hModule,y) #define SETNOFAIL(x,y) x = (void*)GetProcAddress(hModule,y)
...@@ -46,9 +47,15 @@ static BOOL init_functions(void) ...@@ -46,9 +47,15 @@ static BOOL init_functions(void)
} }
if (sizeof(void *) > sizeof(int)) /* 64-bit has a different mangled name */ if (sizeof(void *) > sizeof(int)) /* 64-bit has a different mangled name */
{
SET(pMSVCRTD_operator_new_dbg, "??2@YAPEAX_KHPEBDH@Z"); SET(pMSVCRTD_operator_new_dbg, "??2@YAPEAX_KHPEBDH@Z");
SET(pMSVCRTD_operator_delete, "??3@YAXPEAX@Z");
}
else else
{
SET(pMSVCRTD_operator_new_dbg, "??2@YAPAXIHPBDH@Z"); SET(pMSVCRTD_operator_new_dbg, "??2@YAPAXIHPBDH@Z");
SET(pMSVCRTD_operator_delete, "??3@YAXPAX@Z");
}
if (pMSVCRTD_operator_new_dbg == NULL) if (pMSVCRTD_operator_new_dbg == NULL)
return FALSE; return FALSE;
...@@ -64,7 +71,11 @@ static void test_new(void) ...@@ -64,7 +71,11 @@ static void test_new(void)
mem = pMSVCRTD_operator_new_dbg(42, _NORMAL_BLOCK, __FILE__, __LINE__); mem = pMSVCRTD_operator_new_dbg(42, _NORMAL_BLOCK, __FILE__, __LINE__);
ok(mem != NULL, "memory not allocated\n"); 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);
} }
/**********************************************************************/ /**********************************************************************/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment