From 648c2f3b8c6e85f6ad1b4f23226717d96c5981aa Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Thu, 13 Jan 2022 15:55:21 +0000 Subject: Merge r1893202 from trunk: test: fix memory leaks of the test framework at exit. To please memory leak analysers.. Submitted by: ylavic git-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.7.x@1897005 13f79535-47bb-0310-9956-ffa450edef68 --- test/abts.c | 18 +++++++++++++++++- test/abts.h | 2 +- test/sendfile.c | 6 +++--- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/test/abts.c b/test/abts.c index cab2e1aa0..ef9f9dbf1 100644 --- a/test/abts.c +++ b/test/abts.c @@ -120,7 +120,7 @@ abts_suite *abts_add_suite(abts_suite *suite, const char *suite_name_full) suite_name, p - suite_name); } else { - subsuite->name = suite_name; + subsuite->name = strdup(suite_name); } if (list_tests) { @@ -152,6 +152,21 @@ abts_suite *abts_add_suite(abts_suite *suite, const char *suite_name_full) return suite; } +static void abts_free_suite(abts_suite *suite) +{ + if (suite) { + sub_suite *dptr, *next; + + for (dptr = suite->head; dptr; dptr = next) { + next = dptr->next; + free(dptr->name); + free(dptr); + } + + free(suite); + } +} + void abts_run_test(abts_suite *ts, test_func f, void *value) { abts_case tc; @@ -430,6 +445,7 @@ int main(int argc, const char *const argv[]) { } rv = report(suite); + abts_free_suite(suite); return rv; } diff --git a/test/abts.h b/test/abts.h index 7385ca957..ed1c092d9 100644 --- a/test/abts.h +++ b/test/abts.h @@ -39,7 +39,7 @@ extern "C" { #endif struct sub_suite { - const char *name; + char *name; int num_test; int failed; int not_run; diff --git a/test/sendfile.c b/test/sendfile.c index f92b305f0..5f49c4af0 100644 --- a/test/sendfile.c +++ b/test/sendfile.c @@ -274,7 +274,7 @@ static int client(apr_pool_t *p, client_socket_mode_t socket_mode, hdtr.headers[0].iov_len = strlen(hdtr.headers[0].iov_base); hdtr.headers[1].iov_base = HDR2; hdtr.headers[1].iov_len = strlen(hdtr.headers[1].iov_base); - hdtr.headers[2].iov_base = malloc(HDR3_LEN); + hdtr.headers[2].iov_base = apr_palloc(p, HDR3_LEN); assert(hdtr.headers[2].iov_base); memset(hdtr.headers[2].iov_base, HDR3_CHAR, HDR3_LEN); hdtr.headers[2].iov_len = HDR3_LEN; @@ -285,9 +285,9 @@ static int client(apr_pool_t *p, client_socket_mode_t socket_mode, hdtr.trailers[0].iov_len = strlen(hdtr.trailers[0].iov_base); hdtr.trailers[1].iov_base = TRL2; hdtr.trailers[1].iov_len = strlen(hdtr.trailers[1].iov_base); - hdtr.trailers[2].iov_base = malloc(TRL3_LEN); - memset(hdtr.trailers[2].iov_base, TRL3_CHAR, TRL3_LEN); + hdtr.trailers[2].iov_base = apr_palloc(p, TRL3_LEN); assert(hdtr.trailers[2].iov_base); + memset(hdtr.trailers[2].iov_base, TRL3_CHAR, TRL3_LEN); hdtr.trailers[2].iov_len = TRL3_LEN; expected_len = -- cgit v1.2.1