From 2b92ae308b6d0f05e9bff3b78d3000511d1c979b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20Poljani=C4=87?= Date: Mon, 28 Dec 2020 16:51:57 +0100 Subject: [PATCH] coverage: C++ fix loop in gcov_coverage_dump MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit During coverage reports generation in C++ code gcov_coverage_dump() function would get stuck in endless loop. Fix by checking list head pointer with current list pointer. Signed-off-by: Marko Poljanić --- subsys/testsuite/coverage/coverage.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/subsys/testsuite/coverage/coverage.c b/subsys/testsuite/coverage/coverage.c index 965715e0d6f..c5c9322e77c 100644 --- a/subsys/testsuite/coverage/coverage.c +++ b/subsys/testsuite/coverage/coverage.c @@ -223,6 +223,7 @@ void gcov_coverage_dump(void) uint8_t *buffer; size_t size; size_t written_size; + struct gcov_info *gcov_list_first = gcov_info_head; struct gcov_info *gcov_list = gcov_info_head; k_sched_lock(); @@ -247,6 +248,9 @@ void gcov_coverage_dump(void) k_heap_free(&gcov_heap, buffer); gcov_list = gcov_list->next; + if (gcov_list_first == gcov_list) { + goto coverage_dump_end; + } } coverage_dump_end: printk("\nGCOV_COVERAGE_DUMP_END\n");