X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=src%2Fcommon%2Frexit.c;h=b528975290ae7eaf78f9dcd6027b9be4afeefd4b;hb=491e8bc8e7a9b1d312256817c0b8be7e05b127be;hp=7b837e946987bc59b658ba441f5129b1c22a1c7a;hpb=dd9d65ee727ac7e95801da0f8b5bae7009811802;p=plomrogue diff --git a/src/common/rexit.c b/src/common/rexit.c index 7b837e9..b528975 100644 --- a/src/common/rexit.c +++ b/src/common/rexit.c @@ -4,8 +4,9 @@ #include /* global errno */ #include /* uint16_t */ #include /* printf(), perror(), sprintf() */ -#include /* exit(), EXIT_FAILURE */ +#include /* exit(), free(), EXIT_FAILURE */ #include /* strlen() */ +#include "try_malloc.h" /* try_malloc() */ @@ -20,20 +21,18 @@ extern void set_cleanup_func(void (* f)()) -extern void exit_err(int err, char * msg) +extern void exit_err(int err, const char * msg) { if (0 == err) { return; } cleanup_func(); - if (NULL == msg) + if (!msg) { msg = "Details unknown."; } - printf("Aborted program due to error. %s\n" - "Internal error code: %d\n", - msg, err); + printf("Aborted program due to error. %s\n", msg); if (0 != errno) { perror("errno states"); @@ -43,14 +42,16 @@ extern void exit_err(int err, char * msg) -extern void exit_trouble(int err, char * parent, char * child) +extern void exit_trouble(int err, const char * parent, const char * child) { char * p1 = "Trouble in "; char * p2 = " with "; char * p3 = "."; uint16_t size = strlen(p1) + strlen(parent) + strlen(p2) + strlen(child) + strlen(p3) + 1; - char msg[size]; - sprintf(msg, "%s%s%s%s%s", p1, parent, p2, child, p3); + char * msg = try_malloc(size, __func__); + int test = sprintf(msg, "%s%s%s%s%s", p1, parent, p2, child, p3); + exit_err(test < 0, "Trouble in exit_trouble with sprintf."); exit_err(err, msg); + free(msg); }