X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=src%2Fcommon%2Ftry_malloc.c;h=81e75bf6bda6aa3f0ed5a86205f1b1dc93be6a9d;hb=3dedf6344c941891491773d1cc5d647aa664b218;hp=2a219274bb84060fc8704781b790058e147f2c6b;hpb=dd9d65ee727ac7e95801da0f8b5bae7009811802;p=plomrogue
diff --git a/src/common/try_malloc.c b/src/common/try_malloc.c
index 2a21927..81e75bf 100644
--- a/src/common/try_malloc.c
+++ b/src/common/try_malloc.c
@@ -2,14 +2,23 @@
#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(NULL == 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(NULL == p, msg); /* Bypass exit_trouble() calling try_malloc(). */
+ free(msg);
return p;
}