diff options
| author | Stefan Boberg <[email protected]> | 2021-08-31 20:48:18 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2021-08-31 20:48:18 +0200 |
| commit | 43c279cf78b88511d3fde43e28a99cc78ebf720c (patch) | |
| tree | 434acba955aef3ad978da183db15251d5c74f858 /zencore/iobuffer.cpp | |
| parent | Make it possible to distinguish an empty buffer from a null buffer (diff) | |
| download | zen-43c279cf78b88511d3fde43e28a99cc78ebf720c.tar.xz zen-43c279cf78b88511d3fde43e28a99cc78ebf720c.zip | |
Added some argument validation
Diffstat (limited to 'zencore/iobuffer.cpp')
| -rw-r--r-- | zencore/iobuffer.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/zencore/iobuffer.cpp b/zencore/iobuffer.cpp index 54f0d8fa4..9c7781663 100644 --- a/zencore/iobuffer.cpp +++ b/zencore/iobuffer.cpp @@ -47,9 +47,11 @@ IoBufferCore::FreeBuffer() ////////////////////////////////////////////////////////////////////////// +static_assert(sizeof(IoBufferCore) == 32); + IoBufferCore::IoBufferCore(size_t InSize) { - static_assert(sizeof(IoBufferCore) == 32); + ZEN_ASSERT(InSize); m_DataPtr = AllocateBuffer(InSize, sizeof(void*)); m_DataBytes = InSize; @@ -59,6 +61,8 @@ IoBufferCore::IoBufferCore(size_t InSize) IoBufferCore::IoBufferCore(size_t InSize, size_t Alignment) { + ZEN_ASSERT(InSize); + m_DataPtr = AllocateBuffer(InSize, Alignment); m_DataBytes = InSize; @@ -322,9 +326,11 @@ IoBufferBuilder::MakeFromFile(const wchar_t* FileName, uint64_t Offset, uint64_t ULONGLONG FileSize; DataFile.GetSize(FileSize); + // TODO: should validate that offset is in range + if (Size == ~0ull) { - Size = FileSize; + Size = FileSize - Offset; } else { @@ -335,7 +341,15 @@ IoBufferBuilder::MakeFromFile(const wchar_t* FileName, uint64_t Offset, uint64_t } } - return IoBuffer(IoBuffer::File, DataFile.Detach(), Offset, Size); + if (Size) + { + return IoBuffer(IoBuffer::File, DataFile.Detach(), Offset, Size); + } + else + { + // For an empty file, we may as well just return an empty memory IoBuffer + return IoBuffer(IoBuffer::Wrap, "", 0); + } } return {}; |