From b2e637ee2b4fde52f079c46db971f5d5eb29ea80 Mon Sep 17 00:00:00 2001 From: "andrey.bychkov" Date: Wed, 5 Aug 2026 17:38:17 +0300 Subject: [PATCH] fix(PIIOByteArray): advance pos by actual bytes read, not requested size readDevice() did pos += size instead of pos += ret. The clamping on the next line (pos = min(pos, data_->size_s())) masked the issue in practice, but the semantics were wrong. Aligns with writeDevice() which correctly uses pos += rs.size_s(). --- libs/main/io_devices/piiobytearray.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libs/main/io_devices/piiobytearray.cpp b/libs/main/io_devices/piiobytearray.cpp index 3b6e8374..699bd1e9 100644 --- a/libs/main/io_devices/piiobytearray.cpp +++ b/libs/main/io_devices/piiobytearray.cpp @@ -62,8 +62,7 @@ ssize_t PIIOByteArray::readDevice(void * read_to, ssize_t size) { if (ret <= 0) return -1; memcpy(read_to, data_->data(pos), ret); // piCout << "readed" << ret; - pos += size; - if (pos > data_->size_s()) pos = data_->size_s(); + pos += ret; return ret; }