2012-12-18 16:52:47 +00:00
|
|
|
#include <stdlib.h>
|
2012-12-18 17:01:23 +00:00
|
|
|
#include <stdio.h>
|
2012-12-18 16:52:47 +00:00
|
|
|
#include "jv_alloc.h"
|
|
|
|
|
2012-12-18 17:01:23 +00:00
|
|
|
static void memory_exhausted() {
|
|
|
|
fprintf(stderr, "error: cannot allocate memory\n");
|
|
|
|
abort();
|
|
|
|
}
|
2012-12-18 16:52:47 +00:00
|
|
|
|
|
|
|
void* jv_mem_alloc(size_t sz) {
|
2012-12-18 17:01:23 +00:00
|
|
|
void* p = malloc(sz);
|
|
|
|
if (!p) {
|
|
|
|
memory_exhausted();
|
|
|
|
}
|
|
|
|
return p;
|
2012-12-18 16:52:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void jv_mem_free(void* p) {
|
|
|
|
free(p);
|
|
|
|
}
|
|
|
|
|
|
|
|
void* jv_mem_realloc(void* p, size_t sz) {
|
2012-12-18 17:01:23 +00:00
|
|
|
p = realloc(p, sz);
|
|
|
|
if (!p) {
|
|
|
|
memory_exhausted();
|
|
|
|
}
|
|
|
|
return p;
|
2012-12-18 16:52:47 +00:00
|
|
|
}
|
2012-12-24 17:11:18 +00:00
|
|
|
|
|
|
|
#if JQ_DEBUG
|
|
|
|
volatile char jv_mem_uninitialised;
|
|
|
|
__attribute__((constructor)) void jv_mem_uninit_setup(){
|
|
|
|
char* p = malloc(1);
|
|
|
|
jv_mem_uninitialised = *p;
|
|
|
|
free(p);
|
|
|
|
}
|
|
|
|
#endif
|