#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
+#include <unistd.h>
#include "tap.h"
static char *todo_msg_fixed = "libtap malloc issue";
static int todo = 0;
static int test_died = 0;
+static int test_pid;
/* Encapsulate the pthread code in a conditional. In the absence of
libpthread the code does nothing */
expansions on it */
if(test_name != NULL) {
va_start(ap, test_name);
- vasprintf(&local_test_name, test_name, ap);
+ if (vasprintf(&local_test_name, test_name, ap) < 0)
+ local_test_name = NULL;
va_end(ap);
/* Make sure the test name contains more than digits
static void
_cleanup(void)
{
+ /* If we forked, don't do cleanup in child! */
+ if (getpid() != test_pid)
+ return;
LOCK;
static int run_once = 0;
if(!run_once) {
+ test_pid = getpid();
atexit(_cleanup);
/* stdout needs to be unbuffered so that the output appears
LOCK;
va_start(ap, fmt);
- vasprintf(&skip_msg, fmt, ap);
+ if (vasprintf(&skip_msg, fmt, ap) < 0)
+ skip_msg = NULL;
va_end(ap);
while(n-- > 0) {
LOCK;
va_start(ap, fmt);
- vasprintf(&todo_msg, fmt, ap);
+ if (vasprintf(&todo_msg, fmt, ap) < 0)
+ todo_msg = NULL;
va_end(ap);
todo = 1;