From 98ba6c05902b04eb369eeb167dd6c63bf9d83dd8 Mon Sep 17 00:00:00 2001 From: Eidolon Date: Tue, 5 Dec 2023 19:18:42 -0600 Subject: [PATCH] Fix behavior of SpanStream/VecStream seek-from-end --- src/io/streams.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/io/streams.hpp b/src/io/streams.hpp index ede48f0a9..39f0b6299 100644 --- a/src/io/streams.hpp +++ b/src/io/streams.hpp @@ -431,10 +431,10 @@ public: head = offset; break; case SeekFrom::kEnd: - if (-offset >= static_cast(span_.size())) { + if (static_cast(span_.size()) + offset < 0) { throw std::logic_error("end offset is out of bounds"); } - head = span_.size() - offset; + head = span_.size() + offset; break; case SeekFrom::kCurrent: if (head_ + offset < 0) { @@ -526,10 +526,10 @@ public: head = offset; break; case SeekFrom::kEnd: - if (-offset >= static_cast(vec_.size())) { + if (static_cast(vec_.size()) + offset < 0) { throw std::logic_error("end offset is out of bounds"); } - head = vec_.size() - offset; + head = vec_.size() + offset; break; case SeekFrom::kCurrent: if (head_ + offset < 0) {