summaryrefslogtreecommitdiff
path: root/tests/testdrv.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/testdrv.c')
-rw-r--r--tests/testdrv.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/tests/testdrv.c b/tests/testdrv.c
index 816eae0a..0ccde326 100644
--- a/tests/testdrv.c
+++ b/tests/testdrv.c
@@ -532,6 +532,7 @@ my_spawn (const char *pgmname, char **argv, char **envp, MYPID_T *pid)
*pid = fork ();
if (*pid == MYINVALID_PID)
{
+ xfree (arg_list);
fail ("error forking process: %s\n", strerror (errno));
return -1;
}
@@ -546,17 +547,29 @@ my_spawn (const char *pgmname, char **argv, char **envp, MYPID_T *pid)
/* Assign /dev/null to stdin. */
fd = open ("/dev/null", O_RDONLY);
if (fd == -1)
- die ("failed to open '%s': %s\n", "/dev/null", strerror (errno));
+ {
+ xfree (arg_list);
+ die ("failed to open '%s': %s\n", "/dev/null", strerror (errno));
+ }
if (fd != 0 && dup2 (fd, 0) == -1)
- die ("dup2(%d,0) failed: %s\n", fd, strerror (errno));
+ {
+ xfree (arg_list);
+ die ("dup2(%d,0) failed: %s\n", fd, strerror (errno));
+ }
/* Assign /dev/null to stdout unless in verbose mode. */
if (!verbose)
{
fd = open ("/dev/null", O_RDONLY);
if (fd == -1)
- die ("failed to open '%s': %s\n", "/dev/null", strerror (errno));
+ {
+ xfree (arg_list);
+ die ("failed to open '%s': %s\n", "/dev/null", strerror (errno));
+ }
if (fd != 1 && dup2 (fd, 1) == -1)
- die ("dup2(%d,1) failed: %s\n", fd, strerror (errno));
+ {
+ xfree (arg_list);
+ die ("dup2(%d,1) failed: %s\n", fd, strerror (errno));
+ }
}
/* Exec the program. */