From 92fbf32e19bd064c89a044fafeb01cef7eee9e1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Tue, 3 Nov 2026 22:03:18 +0100 Subject: [PATCH] Ad hoc relay: Iterate the PTP block queue instead of indexing it Co-Authored-By: Claude Opus 5.5 --- Core/HLE/AdhocTransportRelay.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Core/HLE/AdhocTransportRelay.cpp b/Core/HLE/AdhocTransportRelay.cpp index 15b039a0d0..25cad5756b 100644 --- a/Core/HLE/AdhocTransportRelay.cpp +++ b/Core/HLE/AdhocTransportRelay.cpp @@ -376,10 +376,14 @@ static int fillRelayPtpQueue(AdhocSocket *sock) { static size_t relayPtpReadable(const RelayPtpQueue &queue) { u64 now = CoreTiming::GetGlobalTimeUsScaled(); size_t bytes = 0; - for (size_t i = 0; i < queue.blocks.size() && queue.blocks[i].readableAt <= now; ++i) { - bytes += queue.blocks[i].data.size() - (i == 0 ? queue.offset : 0); + for (const RelayPtpBlock &block : queue.blocks) { + if (block.readableAt > now) { + break; + } + bytes += block.data.size(); } - return bytes; + // Less what's already been read from the first one. + return bytes == 0 ? 0 : bytes - queue.offset; } static int ptp_recv_postoffice(int idx, void *data, int *len) {