From a5ec9a2d208779dec83f5904afa7911876768173 Mon Sep 17 00:00:00 2001 From: Max Brombach Date: Tue, 30 Sep 2025 18:03:21 +0000 Subject: [PATCH] VSA: Fix incorrect bytesRead value for end of overlapped buffer --- device/device.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/device/device.cpp b/device/device.cpp index 7dcfa2a..90e0cf3 100644 --- a/device/device.cpp +++ b/device/device.cpp @@ -3315,10 +3315,18 @@ std::optional Device::vsaReadLogicalDisk(uint64_t pos, uint8_t* into, return readLogicalDisk(pos, into, amount); } uint64_t firstReadAmount = diskSize - pos; - if(!readLogicalDisk(pos, into, firstReadAmount)) { + uint64_t bytesRead = 0; + if(auto optBytesReadFirst = readLogicalDisk(pos, into, firstReadAmount)) { + bytesRead = *optBytesReadFirst; + } else { return std::nullopt; } - return readLogicalDisk(VSA::RecordStartOffset, into + firstReadAmount, amount - firstReadAmount); + if(auto optBytesReadSecond = readLogicalDisk(VSA::RecordStartOffset, into + firstReadAmount, amount - firstReadAmount)) { + bytesRead += *optBytesReadSecond; + } else { + return std::nullopt; + } + return bytesRead; } bool Device::dispatchVSAMessages(VSAParser& parser) {