mirror of
https://github.com/spiffcode/hostile-takeover.git
synced 2026-03-29 00:09:40 -06:00
86 lines
1.3 KiB
C++
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 |