Browse Source

failtest: plug memory leak.

Valgrind notes that our child processes leak memory.
Rusty Russell 14 years ago
parent
commit
05ab011ade
1 changed files with 12 additions and 0 deletions
  1. 12 0
      ccan/failtest/failtest.c

+ 12 - 0
ccan/failtest/failtest.c

@@ -310,6 +310,16 @@ static void restore_files(struct saved_file *s)
 	}
 }
 
+static void free_files(struct saved_file *s)
+{
+	while (s) {
+		struct saved_file *next = s->next;
+		free(s->contents);
+		free(s);
+		s = next;
+	}
+}
+
 /* Free up memory, so valgrind doesn't report leaks. */
 static void free_everything(void)
 {
@@ -475,6 +485,8 @@ static bool should_fail(struct failtest_call *call)
 		if (output[1] != STDOUT_FILENO && output[1] != STDERR_FILENO)
 			close(output[1]);
 		control_fd = control[1];
+		/* Valgrind spots the leak if we don't free these. */
+		free_files(files);
 		return true;
 	}