blob: c63c161f473ed257d0c5e84ef9d2ebff63757a74 [file] [log] [blame] [raw]
#include <windows.h>
#include <nt.h>
#include <errno.h>
static void *get_process_heap() {
static void *process_heap = NULL;
if(!process_heap) {
PROCESS_BASIC_INFORMATION pbi;
NtQueryInformationProcess((void *)-1, ProcessBasicInformation, &pbi, sizeof(pbi), NULL);
process_heap = pbi.PebBaseAddress->ProcessHeap;
}
return process_heap;
}
void *malloc(size_t size) {
void *r = RtlAllocateHeap(get_process_heap(), 0, size);
if(!r) errno = ENOMEM;
return r;
}
void *realloc(void *ptr, size_t size) {
if(!ptr) return malloc(size);
if(!size) {
free(ptr);
return NULL;
}
void *r = RtlReAllocateHeap(get_process_heap(), 0, ptr, size);
if(!r) errno = ENOMEM;
return r;
}
void free(void *ptr) {
RtlFreeHeap(get_process_heap(), 0, ptr);
}