X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ffailtest%2Ffailtest.c;h=ce4e2ceed7bac188a0ef82d79eab1c326b7805c7;hp=91420dc699b9c7fdf7f40171b1e39d5fbb7d7ef3;hb=05ab011adecfe0ceb82f854a805138f4d235f15c;hpb=99faa47cc632f10b26e577c860657528e1bf2712 diff --git a/ccan/failtest/failtest.c b/ccan/failtest/failtest.c index 91420dc6..ce4e2cee 100644 --- a/ccan/failtest/failtest.c +++ b/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; }