]> git.ozlabs.org Git - ccan/blobdiff - ccan/failtest/failtest.c
failtest: plug memory leak.
[ccan] / ccan / failtest / failtest.c
index 91420dc699b9c7fdf7f40171b1e39d5fbb7d7ef3..ce4e2ceed7bac188a0ef82d79eab1c326b7805c7 100644 (file)
@@ -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;
        }