#include <errno.h> /* global errno */
#include <stdint.h> /* uint16_t */
#include <stdio.h> /* printf(), perror(), sprintf() */
-#include <stdlib.h> /* exit(), EXIT_FAILURE */
+#include <stdlib.h> /* exit(), free(), EXIT_FAILURE */
#include <string.h> /* strlen() */
+#include "try_malloc.h" /* try_malloc() */
extern void exit_trouble(int err, char * parent, char * child)
{
+ char * f_name = "exit_trouble()";
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];
+ char * msg = try_malloc(size, f_name);
sprintf(msg, "%s%s%s%s%s", p1, parent, p2, child, p3);
exit_err(err, msg);
+ free(msg);
}