mirror of
https://github.com/R2Northstar/NorthstarLauncher
synced 2024-10-30 11:26:40 +01:00
da792245b1
This reverts commitd40b6496b7
, reversing changes made toa98bcc22e8
.
77 lines
1.6 KiB
C++
77 lines
1.6 KiB
C++
#include "pch.h"
|
|
#include "memalloc.h"
|
|
#include "gameutils.h"
|
|
|
|
// TODO: rename to malloc and free after removing statically compiled .libs
|
|
|
|
extern "C" void* _malloc_base(size_t n)
|
|
{
|
|
// allocate into static buffer if g_pMemAllocSingleton isn't initialised
|
|
if (!g_pMemAllocSingleton)
|
|
{
|
|
InitialiseTier0GameUtilFunctions(GetModuleHandleA("tier0.dll"));
|
|
}
|
|
return g_pMemAllocSingleton->m_vtable->Alloc(g_pMemAllocSingleton, n);
|
|
}
|
|
|
|
/*extern "C" void* malloc(size_t n)
|
|
{
|
|
return _malloc_base(n);
|
|
}*/
|
|
|
|
extern "C" void _free_base(void* p)
|
|
{
|
|
if (!g_pMemAllocSingleton)
|
|
{
|
|
spdlog::warn("Trying to free something before g_pMemAllocSingleton was ready, this should never happen");
|
|
InitialiseTier0GameUtilFunctions(GetModuleHandleA("tier0.dll"));
|
|
}
|
|
g_pMemAllocSingleton->m_vtable->Free(g_pMemAllocSingleton, p);
|
|
}
|
|
|
|
extern "C" void* _realloc_base(void* oldPtr, size_t size)
|
|
{
|
|
if (!g_pMemAllocSingleton)
|
|
{
|
|
InitialiseTier0GameUtilFunctions(GetModuleHandleA("tier0.dll"));
|
|
}
|
|
return g_pMemAllocSingleton->m_vtable->Realloc(g_pMemAllocSingleton, oldPtr, size);
|
|
}
|
|
|
|
extern "C" void* _calloc_base(size_t n, size_t size)
|
|
{
|
|
size_t bytes = n * size;
|
|
void* memory = _malloc_base(bytes);
|
|
if (memory)
|
|
{
|
|
memset(memory, 0, bytes);
|
|
}
|
|
return memory;
|
|
}
|
|
|
|
extern "C" char* _strdup_base(const char* src)
|
|
{
|
|
char* str;
|
|
char* p;
|
|
int len = 0;
|
|
|
|
while (src[len])
|
|
len++;
|
|
str = reinterpret_cast<char*>(_malloc_base(len + 1));
|
|
p = str;
|
|
while (*src)
|
|
*p++ = *src++;
|
|
*p = '\0';
|
|
return str;
|
|
}
|
|
|
|
void* operator new(size_t n)
|
|
{
|
|
return _malloc_base(n);
|
|
}
|
|
|
|
void operator delete(void* p) noexcept
|
|
{
|
|
_free_base(p);
|
|
} // /FORCE:MULTIPLE
|