From 9e5c74c5711557b120945b5a2c0d6723d3427c20 Mon Sep 17 00:00:00 2001 From: Tharre Date: Wed, 16 Apr 2014 22:13:05 +0200 Subject: Rewrote malloc() and other wrappers --- src/util.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'src/util.c') diff --git a/src/util.c b/src/util.c index 80734c5..a0e05f5 100644 --- a/src/util.c +++ b/src/util.c @@ -11,14 +11,32 @@ #include "../config.h" /* A safe malloc wrapper. */ -void *ec_malloc(size_t size) { +void *safe_malloc_(size_t size, const char *file, unsigned int line) { void *ptr = malloc(size); + if (!ptr) - fatal("redo: cannot allocate %zu bytes", size); + fatal_(file, line, "redo: cannot allocate %zu bytes", size); return ptr; } +void *safe_realloc_(void *ptr, size_t size, const char *file, unsigned int line) { + void *ptr2 = realloc(ptr, size); + if (!ptr2) + fatal_(file, line, "redo: cannot reallocate %zu bytes", size); + + return ptr2; +} + +FILE *safe_fopen_(const char *path, const char *mode, const char *file, + unsigned int line) { + FILE *temp = fopen(path, mode); + if (!temp) + fatal_(file, line, "redo: failed to open %s", path); + + return temp; +} + /* For concating multiple strings into a single larger one. */ char *concat(size_t count, ...) { assert(count > 0); @@ -31,7 +49,7 @@ char *concat(size_t count, ...) { size += args_len[i]; } size++; - char *result = ec_malloc(size); + char *result = safe_malloc(size); /* debug("Allocated %zu bytes at %p\n", size, result); */ uintptr_t offset = 0; for (i = 0; i < count; ++i) { @@ -49,6 +67,7 @@ char *xbasename(const char *path) { return ptr? ptr+1 : (char*) path; } +/* TODO: REIMPLEMENT */ char *ec_strdup(const char* str) { assert(str); size_t len = strlen(str) + 1; -- cgit v1.2.3-70-g09d2