Fix null deref in contextSwitch().

This commit is contained in:
Andreas Kling 2018-10-21 21:57:43 +02:00
parent 2f99ff801e
commit dd6706a1a1
Notes: sideshowbarker 2024-07-19 18:46:02 +09:00

View file

@ -360,14 +360,17 @@ static bool contextSwitch(Task* t)
if (current == t)
return false;
// If the last task hasn't blocked (still marked as running),
// mark it as runnable for the next round.
if (current->state() == Task::Running)
current->setState(Task::Runnable);
if (current) {
// If the last task hasn't blocked (still marked as running),
// mark it as runnable for the next round.
if (current->state() == Task::Running)
current->setState(Task::Runnable);
bool success = MemoryManager::the().unmapRegionsForTask(*current);
ASSERT(success);
success = MemoryManager::the().mapRegionsForTask(*t);
bool success = MemoryManager::the().unmapRegionsForTask(*current);
ASSERT(success);
}
bool success = MemoryManager::the().mapRegionsForTask(*t);
ASSERT(success);
current = t;