mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-30 12:25:49 +00:00
sceRudpPollCancel waited until no wait was registered, so a wait that started during the drain kept it blocked, forever for an infinite one. Waits registered when the cancel starts now move to a draining count, and the cancel returns once those have left. A scope guard releases each wait's registration on every exit, retaking the lock if the wait had dropped it, so an exception in the condition wait no longer leaves a registration that a later cancel can never drain. Reported by @MarcZX10, @thepoppfish, @adriadam10 and @oneandonlydean; the guard follows @thepoppfish's repair. Co-Authored-By: Claude Opus 5.5 <[email protected]>