diff options
Diffstat (limited to '')
-rw-r--r-- | src/utils.c | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/src/utils.c b/src/utils.c index 8ad876d..ebaef19 100644 --- a/src/utils.c +++ b/src/utils.c @@ -1,4 +1,4 @@ -/* $Id: utils.c,v 1.26 2002-04-18 16:57:06 rjkaes Exp $ +/* $Id: utils.c,v 1.27 2002-04-18 17:49:14 rjkaes Exp $ * * Misc. routines which are used by the various functions to handle strings * and memory allocation and pretty much anything else we can think of. Also, @@ -37,7 +37,12 @@ void * debugging_calloc(size_t nmemb, size_t size, const char *file, unsigned long line) { - void *ptr = calloc(nmemb, size); + void *ptr; + + assert(nmemb > 0); + assert(size > 0); + + ptr = calloc(nmemb, size); fprintf(stderr, "{calloc: %p:%u x %u} %s:%lu\n", ptr, nmemb, size, file, line); return ptr; @@ -46,7 +51,11 @@ debugging_calloc(size_t nmemb, size_t size, const char *file, void * debugging_malloc(size_t size, const char *file, unsigned long line) { - void *ptr = malloc(size); + void *ptr; + + assert(size > 0); + + ptr = malloc(size); fprintf(stderr, "{malloc: %p:%u} %s:%lu\n", ptr, size, file, line); return ptr; } @@ -54,7 +63,12 @@ debugging_malloc(size_t size, const char *file, unsigned long line) void * debugging_realloc(void *ptr, size_t size, const char *file, unsigned long line) { - void *newptr = realloc(ptr, size); + void *newptr; + + assert(ptr != NULL); + assert(size > 0); + + newptr = realloc(ptr, size); fprintf(stderr, "{realloc: %p -> %p:%u} %s:%lu\n", ptr, newptr, size, file, line); return newptr; @@ -63,11 +77,31 @@ debugging_realloc(void *ptr, size_t size, const char *file, unsigned long line) void debugging_free(void *ptr, const char *file, unsigned long line) { + assert(ptr != NULL); + fprintf(stderr, "{free: %p} %s:%lu\n", ptr, file, line); free(ptr); return; } +char* +debugging_strdup(const char* s, const char* file, unsigned long line) +{ + char* ptr; + size_t len; + + assert(s != NULL); + + len = strlen(s) + 1; + ptr = malloc(len); + if (!ptr) + return NULL; + memcpy(ptr, s, len); + + fprintf(stderr, "{strdup: %p:%u} %s:%lu\n", ptr, len, file, line); + return ptr; +} + #endif #define HEADER_SIZE (1024 * 8) |