diff options
Diffstat (limited to 'src/rt/rust_sched_loop.cpp')
| -rw-r--r-- | src/rt/rust_sched_loop.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/rt/rust_sched_loop.cpp b/src/rt/rust_sched_loop.cpp index aa2c62c630d..7c764921029 100644 --- a/src/rt/rust_sched_loop.cpp +++ b/src/rt/rust_sched_loop.cpp @@ -68,11 +68,15 @@ rust_sched_loop::kill_all_tasks() { killed = true; for (size_t i = 0; i < running_tasks.length(); i++) { - all_tasks.push_back(running_tasks[i]); + rust_task *t = running_tasks[i]; + t->ref(); + all_tasks.push_back(t); } for (size_t i = 0; i < blocked_tasks.length(); i++) { - all_tasks.push_back(blocked_tasks[i]); + rust_task *t = blocked_tasks[i]; + t->ref(); + all_tasks.push_back(t); } } @@ -80,6 +84,7 @@ rust_sched_loop::kill_all_tasks() { rust_task *task = all_tasks.back(); all_tasks.pop_back(); task->kill(); + task->deref(); } } |
