summaryrefslogtreecommitdiff
path: root/core/fxcrt
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcrt')
-rw-r--r--core/fxcrt/cfx_memorystream.cpp8
-rw-r--r--core/fxcrt/cfx_memorystream.h3
2 files changed, 11 insertions, 0 deletions
diff --git a/core/fxcrt/cfx_memorystream.cpp b/core/fxcrt/cfx_memorystream.cpp
index 345b381226..dcd21f073f 100644
--- a/core/fxcrt/cfx_memorystream.cpp
+++ b/core/fxcrt/cfx_memorystream.cpp
@@ -148,6 +148,14 @@ bool CFX_MemoryStream::WriteBlock(const void* buffer,
return true;
}
+bool CFX_MemoryStream::Seek(size_t pos) {
+ if (pos > m_nCurSize)
+ return false;
+
+ m_nCurPos = pos;
+ return true;
+}
+
void CFX_MemoryStream::EstimateSize(size_t nInitSize, size_t nGrowSize) {
if (m_dwFlags & Type::kConsecutive) {
if (m_Blocks.empty()) {
diff --git a/core/fxcrt/cfx_memorystream.h b/core/fxcrt/cfx_memorystream.h
index ef66080420..a56a2dbe2c 100644
--- a/core/fxcrt/cfx_memorystream.h
+++ b/core/fxcrt/cfx_memorystream.h
@@ -28,6 +28,9 @@ class CFX_MemoryStream : public IFX_SeekableStream {
bool WriteBlock(const void* buffer, FX_FILESIZE offset, size_t size) override;
bool Flush() override;
+ // Sets the cursor position to |pos| if possible
+ bool Seek(size_t pos);
+
bool IsConsecutive() const { return !!(m_dwFlags & Type::kConsecutive); }
uint8_t* GetBuffer() const {