hostile-takeover/game/win/main.cpp
2014-07-06 17:47:28 -07:00

86 lines
1.3 KiB
C++

#include "..\ht.h"
HINSTANCE ghInst;
int __stdcall WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, char *pszCmds, int nCmdShow)
{
WSADATA wsad;
WSAStartup(MAKEWORD(1, 1), &wsad);
ghInst = hInst;
ReporterInit();
GameMain(pszCmds);
ReporterExit();
WSACleanup();
return 1;
}
// Ring buffer of old allocs to check for corruption
#ifdef CHECK_OLD_ALLOCS
void *gapvRing[500];
int gipv;
void my_check(void *pv)
{
dword *pcb = (dword *)((dword *)pv - 1);
byte *pb = (byte *)pv;
for (dword n = 0; n < *pcb; n++) {
if (pb[n] != 0xdd)
_asm { int 3 };
}
}
void my_free(void *pv)
{
my_check(pv);
void *pvT = (void *)((dword *)pv - 1);
free(pvT);
}
void my_freeall()
{
for (int i = 0; i < ARRAYSIZE(gapvRing); i++) {
if (gapvRing[i] != NULL)
my_free(gapvRing[i]);
}
}
void my_fill(void *pv)
{
dword *pcb = (dword *)((dword *)pv - 1);
memset(pv, 0xdd, *pcb);
}
void my_delete(void *pv)
{
if (pv == NULL)
return;
if (gapvRing[gipv] != NULL)
my_free((dword *)gapvRing[gipv]);
gapvRing[gipv] = pv;
gipv++;
if (gipv >= ARRAYSIZE(gapvRing))
gipv = 0;
my_fill(pv);
}
void *my_new(int cb)
{
int cbT = cb + 4;
void *pv = malloc(cbT);
*((dword *)pv) = cb;
return (void *)((dword *)pv + 1);
}
void my_alloccheck()
{
for (int i = 0; i < ARRAYSIZE(gapvRing); i++) {
if (gapvRing[i] != NULL)
my_check(gapvRing[i]);
}
}
#endif