diff options
Diffstat (limited to 'firmware/target/hosted/sdl/thread-sdl.c')
-rw-r--r-- | firmware/target/hosted/sdl/thread-sdl.c | 7 |
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 | ||
567 | void thread_exit(void) | 567 | void 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 | ||
572 | void thread_wait(unsigned int thread_id) | 577 | void thread_wait(unsigned int thread_id) |