coverage: C++ fix loop in gcov_coverage_dump

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ć <mpoljanic@gmail.com>
This commit is contained in:
Marko Poljanić 2020-12-28 16:51:57 +01:00 committed by Anas Nashif
commit 2b92ae308b

View file

@ -223,6 +223,7 @@ void gcov_coverage_dump(void)
uint8_t *buffer; uint8_t *buffer;
size_t size; size_t size;
size_t written_size; size_t written_size;
struct gcov_info *gcov_list_first = gcov_info_head;
struct gcov_info *gcov_list = gcov_info_head; struct gcov_info *gcov_list = gcov_info_head;
k_sched_lock(); k_sched_lock();
@ -247,6 +248,9 @@ void gcov_coverage_dump(void)
k_heap_free(&gcov_heap, buffer); k_heap_free(&gcov_heap, buffer);
gcov_list = gcov_list->next; gcov_list = gcov_list->next;
if (gcov_list_first == gcov_list) {
goto coverage_dump_end;
}
} }
coverage_dump_end: coverage_dump_end:
printk("\nGCOV_COVERAGE_DUMP_END\n"); printk("\nGCOV_COVERAGE_DUMP_END\n");