Closes #43.
Tested with:
ulimit -v 5000
./jq -n -c 'def f(x): x,f([x,x]); f(0)'
#include <stdlib.h>
+#include <stdio.h>
#include "jv_alloc.h"
+static void memory_exhausted() {
+ fprintf(stderr, "error: cannot allocate memory\n");
+ abort();
+}
void* jv_mem_alloc(size_t sz) {
- return malloc(sz);
+ void* p = malloc(sz);
+ if (!p) {
+ memory_exhausted();
+ }
+ return p;
}
void jv_mem_free(void* p) {
}
void* jv_mem_realloc(void* p, size_t sz) {
- return realloc(p, sz);
+ p = realloc(p, sz);
+ if (!p) {
+ memory_exhausted();
+ }
+ return p;
}