X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=src%2Fcommon%2Ftry_malloc.c;h=053d4306e460b5f319a9ff5eee7804027b15a8b9;hb=063eb0e64a0a2122c5581a668217290eb0b01f2b;hp=2a219274bb84060fc8704781b790058e147f2c6b;hpb=dd9d65ee727ac7e95801da0f8b5bae7009811802;p=plomrogue diff --git a/src/common/try_malloc.c b/src/common/try_malloc.c index 2a21927..053d430 100644 --- a/src/common/try_malloc.c +++ b/src/common/try_malloc.c @@ -1,15 +1,29 @@ -/* src/common/try_malloc.c */ +/* src/common/try_malloc.c + * + * This file is part of PlomRogue. PlomRogue is licensed under the GPL version 3 + * or any later version. For details on its copyright, license, and warranties, + * see the file NOTICE in the root directory of the PlomRogue source package. + */ #include "try_malloc.h" #include /* for malloc */ +#include /* sprintf() */ +#include /* strlen() */ #include /* for size_t */ -#include "rexit.h" /* for exit_trouble() */ +#include "rexit.h" /* for exit_err() */ -extern void * try_malloc(size_t size, char * f) +extern void * try_malloc(size_t size, const char * f) { + char * prefix = "Trouble with malloc in "; + char * msg = malloc(strlen(prefix) + strlen(f) + 1 + 1); + exit_err(!msg, + "Trouble in try_malloc with malloc for error message string."); + int test = sprintf(msg, "%s%s.", prefix, f); + exit_err(test < 0, "Trouble in try_malloc with sprintf."); void * p = malloc(size); - exit_trouble(NULL == p, f, "malloc()"); + exit_err(!p, msg); /* Bypass exit_trouble() calling try_malloc(). */ + free(msg); return p; }