mirror of
https://github.com/R2Northstar/NorthstarLauncher
synced 2024-09-29 09:19:41 +02:00
Clean up
This commit is contained in:
parent
831a9a99f4
commit
0a0cc706e7
@ -88,7 +88,6 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="main.cpp" />
|
||||
<ClCompile Include="memalloc.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="memalloc.h" />
|
||||
|
@ -18,9 +18,6 @@
|
||||
<ClCompile Include="main.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="memalloc.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="resource1.h">
|
||||
|
@ -1,90 +0,0 @@
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <Windows.h>
|
||||
#include "memalloc.h"
|
||||
#include <stdio.h>
|
||||
|
||||
extern HMODULE hTier0Module;
|
||||
IMemAlloc** g_ppMemAllocSingleton;
|
||||
|
||||
void LoadTier0Handle()
|
||||
{
|
||||
if (!hTier0Module) hTier0Module = GetModuleHandleA("tier0.dll");
|
||||
if (!hTier0Module) return;
|
||||
|
||||
g_ppMemAllocSingleton = (IMemAlloc**)GetProcAddress(hTier0Module, "g_pMemAllocSingleton");
|
||||
}
|
||||
|
||||
const int STATIC_ALLOC_SIZE = 16384;
|
||||
|
||||
size_t g_iStaticAllocated = 0;
|
||||
void* g_pLastAllocated = nullptr;
|
||||
char pStaticAllocBuf[STATIC_ALLOC_SIZE];
|
||||
|
||||
// they should never be used here, except in LibraryLoadError // haha not true
|
||||
|
||||
void* malloc(size_t n)
|
||||
{
|
||||
//printf("NorthstarLauncher malloc: %llu\n", n);
|
||||
// allocate into static buffer
|
||||
if (g_iStaticAllocated + n <= STATIC_ALLOC_SIZE)
|
||||
{
|
||||
void* ret = pStaticAllocBuf + g_iStaticAllocated;
|
||||
g_iStaticAllocated += n;
|
||||
g_pLastAllocated = ret;
|
||||
return ret;
|
||||
}
|
||||
else
|
||||
{
|
||||
// try to fallback to g_pMemAllocSingleton
|
||||
if (!hTier0Module || !g_ppMemAllocSingleton) LoadTier0Handle();
|
||||
if (g_ppMemAllocSingleton && *g_ppMemAllocSingleton)
|
||||
return (*g_ppMemAllocSingleton)->m_vtable->Alloc(*g_ppMemAllocSingleton, n);
|
||||
else
|
||||
throw "Cannot allocate";
|
||||
}
|
||||
}
|
||||
|
||||
void free(void* p)
|
||||
{
|
||||
//printf("NorthstarLauncher free: %p\n", p);
|
||||
// if it was allocated into the static buffer, just do nothing, safest way to deal with it
|
||||
if (p >= pStaticAllocBuf && p <= pStaticAllocBuf + STATIC_ALLOC_SIZE)
|
||||
return;
|
||||
|
||||
if (g_ppMemAllocSingleton && *g_ppMemAllocSingleton)
|
||||
(*g_ppMemAllocSingleton)->m_vtable->Free(*g_ppMemAllocSingleton, p);
|
||||
}
|
||||
|
||||
void* realloc(void* old_ptr, size_t size) {
|
||||
// it was allocated into the static buffer
|
||||
if (old_ptr >= pStaticAllocBuf && old_ptr <= pStaticAllocBuf + STATIC_ALLOC_SIZE)
|
||||
{
|
||||
if (g_pLastAllocated == old_ptr)
|
||||
{
|
||||
// nothing was allocated after this
|
||||
size_t old_size = g_iStaticAllocated - ((size_t)g_pLastAllocated - (size_t)pStaticAllocBuf);
|
||||
size_t diff = size - old_size;
|
||||
if (diff > 0)
|
||||
g_iStaticAllocated += diff;
|
||||
return old_ptr;
|
||||
}
|
||||
else
|
||||
{
|
||||
return malloc(size);
|
||||
}
|
||||
}
|
||||
|
||||
if (g_ppMemAllocSingleton && *g_ppMemAllocSingleton)
|
||||
return (*g_ppMemAllocSingleton)->m_vtable->Realloc(*g_ppMemAllocSingleton, old_ptr, size);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void* operator new(size_t n)
|
||||
{
|
||||
return malloc(n);
|
||||
}
|
||||
|
||||
void operator delete(void* p)
|
||||
{
|
||||
free(p);
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
class IMemAlloc
|
||||
{
|
||||
public:
|
||||
struct VTable
|
||||
{
|
||||
void* unknown[1]; // alloc debug
|
||||
void* (*Alloc) (IMemAlloc* memAlloc, size_t nSize);
|
||||
void* unknown2[1]; // realloc debug
|
||||
void* (*Realloc)(IMemAlloc* memAlloc, void* pMem, size_t nSize);
|
||||
void* unknown3[1]; // free #1
|
||||
void (*Free) (IMemAlloc* memAlloc, void* pMem);
|
||||
void* unknown4[2]; // nullsubs, maybe CrtSetDbgFlag
|
||||
size_t(*GetSize) (IMemAlloc* memAlloc, void* pMem);
|
||||
void* unknown5[9]; // they all do literally nothing
|
||||
void (*DumpStats) (IMemAlloc* memAlloc);
|
||||
void (*DumpStatsFileBase) (IMemAlloc* memAlloc, const char* pchFileBase);
|
||||
void* unknown6[4];
|
||||
int (*heapchk) (IMemAlloc* memAlloc);
|
||||
};
|
||||
|
||||
VTable* m_vtable;
|
||||
};
|
@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
||||
#define WIN32_EXTRA_LEAN
|
||||
#define VC_EXTRALEAN
|
||||
// Windows Header Files
|
||||
#include <windows.h>
|
||||
#include <Windows.h>
|
||||
|
@ -92,12 +92,10 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="framework.h" />
|
||||
<ClInclude Include="Memory.h" />
|
||||
<ClInclude Include="pch.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="dllmain.cpp" />
|
||||
<ClCompile Include="Memory.cpp" />
|
||||
<ClCompile Include="pch.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
|
@ -21,9 +21,6 @@
|
||||
<ClInclude Include="pch.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Memory.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="dllmain.cpp">
|
||||
@ -32,8 +29,5 @@
|
||||
<ClCompile Include="pch.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Memory.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -7,8 +7,6 @@
|
||||
#ifndef PCH_H
|
||||
#define PCH_H
|
||||
|
||||
#include "Memory.h"
|
||||
|
||||
// add headers that you want to pre-compile here
|
||||
#include "framework.h"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user