diff --git a/kernel/scheduler/scheduler.cpp b/kernel/scheduler/scheduler.cpp index 686f87a..8d37c3d 100644 --- a/kernel/scheduler/scheduler.cpp +++ b/kernel/scheduler/scheduler.cpp @@ -122,7 +122,8 @@ void yield(void) { if (next == cur) return; // only one task, nothing to do - cur->state = TASK_STATE_READY; + if (cur->state != TASK_STATE_TERMINATED) + cur->state = TASK_STATE_READY; next->state = TASK_STATE_RUNNING; g_current = next;