From d527d2db802e270f95c64142edbd9990469423d6 Mon Sep 17 00:00:00 2001 From: Snaipe Date: Fri, 30 Oct 2015 10:20:55 +0100 Subject: [PATCH] Fixed missing destructor, causing a memory leak --- src/core/stats.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/core/stats.c b/src/core/stats.c index dd8969b..f68e918 100644 --- a/src/core/stats.c +++ b/src/core/stats.c @@ -105,6 +105,11 @@ static void destroy_test_stats(void *ptr, CR_UNUSED void *meta) { } } +static void destroy_assert_stats(void *ptr, CR_UNUSED void *meta) { + s_assert_stats *stats = ptr; + free((void *) stats->message); +} + s_test_stats *test_stats_init(struct criterion_test *t) { s_test_stats *stats = smalloc( .size = sizeof (s_test_stats), @@ -182,7 +187,9 @@ static void push_assert(s_glob_stats *stats, s_assert_stats *data = ptr; - s_assert_stats *dup = smalloc(sizeof (s_assert_stats)); + s_assert_stats *dup = smalloc( + .size = sizeof (s_assert_stats), + .dtor = destroy_assert_stats); memcpy(dup, data, sizeof (s_assert_stats)); dup->message = strdup(data->message);