// memory allocation
-void* rfxalloc(int size)
+void* rfx_alloc(int size)
{
void*ptr;
+ if(size == 0) {
+ *(int*)0 = 0xdead;
+ fprintf(stderr, "Warning: Zero alloc\n");
+ return 0;
+ }
+
+ ptr = malloc(size);
+ if(!ptr) {
+ fprintf(stderr, "FATAL: Out of memory\n");
+ /* TODO: we should send a signal, so that the debugger kicks in */
+ exit(1);
+ }
+ return ptr;
+}
+void* rfx_realloc(void*data, int size)
+{
+ void*ptr;
+ if(size == 0) {
+ *(int*)0 = 0xdead;
+ fprintf(stderr, "Warning: Zero realloc\n");
+ rfx_free(data);
+ return 0;
+ }
+ if(!data) {
+ ptr = malloc(size);
+ } else {
+ ptr = realloc(data, size);
+ }
+
+ if(!ptr) {
+ fprintf(stderr, "FATAL: Out of memory\n");
+ /* TODO: we should send a signal, so that the debugger kicks in */
+ exit(1);
+ }
+ return ptr;
+}
+void* rfx_calloc(int size)
+{
+ void*ptr;
+ if(size == 0) {
+ *(int*)0 = 0xdead;
+ fprintf(stderr, "Warning: Zero alloc\n");
+ return 0;
+ }
#ifdef HAVE_CALLOC
ptr = calloc(size);
#else
ptr = malloc(size);
- memset(ptr, 0, size);
#endif
if(!ptr) {
fprintf(stderr, "FATAL: Out of memory\n");
/* TODO: we should send a signal, so that the debugger kicks in */
exit(1);
}
+#ifndef HAVE_CALLOC
+ memset(ptr, 0, size);
+#endif
return ptr;
}
-void rfxdealloc(void*ptr)
+void rfx_free(void*ptr)
{
+ if(!ptr)
+ return;
free(ptr);
}