From 38756822825e20eca3b9e01b735946175223d692 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Sat, 7 Mar 2026 20:42:37 +0800 Subject: Refactor stream. --- src/base/io/MemoryStream.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'src/base/io/MemoryStream.cpp') diff --git a/src/base/io/MemoryStream.cpp b/src/base/io/MemoryStream.cpp index 4d289197..555526cd 100644 --- a/src/base/io/MemoryStream.cpp +++ b/src/base/io/MemoryStream.cpp @@ -20,9 +20,11 @@ MemoryStream::MemoryStream( } } -MemoryStream::~MemoryStream() {} - -void MemoryStream::Close() { DoClose(); } +MemoryStream::~MemoryStream() { + if (buffer_ && release_func_) { + release_func_(buffer_, size_); + } +} Index MemoryStream::DoSeek(Index offset, SeekOrigin origin) { switch (origin) { @@ -40,6 +42,10 @@ Index MemoryStream::DoSeek(Index offset, SeekOrigin origin) { } Index MemoryStream::DoRead(std::byte* buffer, Index offset, Index size) { + if (position_ == size_) { + return kEOF; + } + if (position_ + size > size_) { size = size_ - position_; } @@ -64,10 +70,11 @@ Index MemoryStream::DoWrite(const std::byte* buffer, Index offset, Index size) { } void MemoryStream::DoClose() { - CRU_STREAM_BEGIN_CLOSE - release_func_(buffer_, size_); + if (release_func_) { + release_func_(buffer_, size_); + release_func_ = {}; + } buffer_ = nullptr; - release_func_ = {}; } } // namespace cru::io -- cgit v1.2.3