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:
parent
f06fec0ef7
commit
2b92ae308b
1 changed files with 4 additions and 0 deletions
|
@ -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");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue