mirror of
https://github.com/Cesarus85/ringfall-mjolnir-vr.git
synced 2026-10-22 07:00:30 +02:00
60 lines
846 B
C
60 lines
846 B
C
/*
|
|
HANDLER.CPP
|
|
|
|
symbols in this file:
|
|
?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z
|
|
?_query_new_handler@@YAP6AHI@ZXZ
|
|
__callnewh
|
|
?_pnhHeap@@3P6AHI@ZA
|
|
*/
|
|
|
|
#include <new.h>
|
|
|
|
/* ---------- private constants */
|
|
|
|
#define _HEAP_LOCK 4
|
|
|
|
/* ---------- external interfaces */
|
|
|
|
extern "C" void __cdecl _lock(
|
|
int lock_number);
|
|
|
|
extern "C" void __cdecl _unlock(
|
|
int lock_number);
|
|
|
|
/* ---------- public data */
|
|
|
|
_PNH _pnhHeap;
|
|
|
|
/* ---------- public code */
|
|
|
|
_PNH __cdecl _set_new_handler(
|
|
_PNH new_handler)
|
|
{
|
|
_PNH old_handler;
|
|
|
|
_lock(_HEAP_LOCK);
|
|
old_handler = _pnhHeap;
|
|
_pnhHeap = new_handler;
|
|
_unlock(_HEAP_LOCK);
|
|
|
|
return old_handler;
|
|
}
|
|
|
|
_PNH __cdecl _query_new_handler(
|
|
void)
|
|
{
|
|
return _pnhHeap;
|
|
}
|
|
|
|
extern "C" int __cdecl _callnewh(
|
|
size_t size)
|
|
{
|
|
_PNH new_handler = _pnhHeap;
|
|
|
|
if (!new_handler || !(*new_handler)(size))
|
|
return 0;
|
|
|
|
return 1;
|
|
}
|