mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-01-06 16:45:03 +00:00
MasterPTY's double buffer unblock callback would take m_slave's spinlock and then call evaluate_block_conditions() which would take BlockerSet's spinlock, while on the other hand, BlockerSet's add_blocker would take BlockerSet's spinlock, and then call should_add_blocker, which would call unblock_if_conditions_are_met, which would then call should_unblock, which will finally call MasterPTY::can_read() which will take m_slave's spinlock. Resolve this by moving the call to evaluate_block_conditions() out of the scope of m_slave's spinlock, as there's no need to hold the lock while calling it anyways.