Kernel: Fix BlockCondition::unblock return value

BlockCondition::unblock should return true if it unblocked at
least one thread, not if iterating the blockers had been stopped.
This is a regression introduced by 49a76164c.

Fixes #4670
This commit is contained in:
Tom 2020-12-30 19:29:41 -07:00 committed by Andreas Kling
parent 82c4812730
commit 72440d90fe

View file

@ -409,16 +409,18 @@ public:
{
ASSERT(m_lock.is_locked());
bool stop_iterating = false;
bool did_unblock = false;
for (size_t i = 0; i < m_blockers.size() && !stop_iterating;) {
auto& info = m_blockers[i];
if (unblock_one(*info.blocker, info.data, stop_iterating)) {
m_blockers.remove(i);
did_unblock = true;
continue;
}
i++;
}
return !stop_iterating;
return did_unblock;
}
virtual bool should_add_blocker(Blocker&, void*) { return true; }