summaryrefslogtreecommitdiff
path: root/firmware/target/hosted/sdl/thread-sdl.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/hosted/sdl/thread-sdl.c')
-rw-r--r--firmware/target/hosted/sdl/thread-sdl.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/firmware/target/hosted/sdl/thread-sdl.c b/firmware/target/hosted/sdl/thread-sdl.c
index 28a9cb8d3a..da43d6ea9f 100644
--- a/firmware/target/hosted/sdl/thread-sdl.c
+++ b/firmware/target/hosted/sdl/thread-sdl.c
@@ -566,7 +566,12 @@ void remove_thread(unsigned int thread_id)
566 566
567void thread_exit(void) 567void thread_exit(void)
568{ 568{
569 remove_thread(THREAD_ID_CURRENT); 569 struct thread_entry *t = thread_id_entry(THREAD_ID_CURRENT);
570 /* the main thread cannot be removed since it's created implicitely
571 * by starting the program;
572 * it has no valid jumpbuf to exit, do nothing for now */
573 if (t != &threads[0])
574 remove_thread(t->id);
570} 575}
571 576
572void thread_wait(unsigned int thread_id) 577void thread_wait(unsigned int thread_id)