Skip to content

Commit 2b92ae3

Browse files
mpoljanicnashif
authored andcommitted
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ć <[email protected]>
1 parent f06fec0 commit 2b92ae3

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

subsys/testsuite/coverage/coverage.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ void gcov_coverage_dump(void)
223223
uint8_t *buffer;
224224
size_t size;
225225
size_t written_size;
226+
struct gcov_info *gcov_list_first = gcov_info_head;
226227
struct gcov_info *gcov_list = gcov_info_head;
227228

228229
k_sched_lock();
@@ -247,6 +248,9 @@ void gcov_coverage_dump(void)
247248

248249
k_heap_free(&gcov_heap, buffer);
249250
gcov_list = gcov_list->next;
251+
if (gcov_list_first == gcov_list) {
252+
goto coverage_dump_end;
253+
}
250254
}
251255
coverage_dump_end:
252256
printk("\nGCOV_COVERAGE_DUMP_END\n");

0 commit comments

Comments
 (0)