From: Rusty Russell Date: Tue, 18 Jan 2011 00:35:37 +0000 (+1030) Subject: failtest: free up everything on exit. X-Git-Url: http://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=020f8ef45a751b9fc9f3739e8e8f8f9ddae69be8 failtest: free up everything on exit. Otherwise valgrind will report that tests leak memory. --- diff --git a/ccan/failtest/failtest.c b/ccan/failtest/failtest.c index 1127e4fd..5d7a54f1 100644 --- a/ccan/failtest/failtest.c +++ b/ccan/failtest/failtest.c @@ -522,12 +522,33 @@ void failtest_init(int argc, char *argv[]) } } +/* Free up memory, so valgrind doesn't report leaks. */ +static void free_everything(void) +{ + unsigned int i; + + for (i = 0; i < writes_num; i++) { + free(writes[i].data); + if (writes[i].hdr.offset != (off_t)-1) + free(writes[i].olddata); + } + free(writes); + free(fd_orig); + for (i = 0; i < history_num; i++) { + if (history[i].type == FAILTEST_OPEN) + free((char *)history[i].u.open.pathname); + } + free(history); +} + void failtest_exit(int status) { unsigned int i; - if (control_fd == -1) + if (control_fd == -1) { + free_everything(); exit(status); + } if (failtest_exit_check) { if (!failtest_exit_check(history, history_num)) @@ -555,6 +576,7 @@ void failtest_exit(int status) close(fd_orig[i].fd); } + free_everything(); tell_parent(SUCCESS); exit(0); }