diff options
Diffstat (limited to 'zencore/sharedbuffer.cpp')
| -rw-r--r-- | zencore/sharedbuffer.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/zencore/sharedbuffer.cpp b/zencore/sharedbuffer.cpp index db6deff38..bbbaa0b24 100644 --- a/zencore/sharedbuffer.cpp +++ b/zencore/sharedbuffer.cpp @@ -49,7 +49,7 @@ SharedBuffer::MakeOwned() const uint64_t Size = m_Buffer->DataBytes(); void* Buffer = Memory::Alloc(Size, 16); - auto NewOwner = new IoBufferCore(Buffer, Size); + IoBufferCore* NewOwner = new IoBufferCore(Buffer, Size); NewOwner->SetIsOwnedByThis(true); memcpy(Buffer, m_Buffer->DataPointer(), Size); @@ -60,9 +60,14 @@ SharedBuffer::MakeOwned() SharedBuffer SharedBuffer::MakeView(MemoryView View, SharedBuffer OuterBuffer) { - // Todo: verify that view is within the shared buffer - - return SharedBuffer(new IoBufferCore(OuterBuffer.m_Buffer, const_cast<void*>(View.GetData()), View.GetSize())); + if (OuterBuffer) + { + ZEN_ASSERT(OuterBuffer.GetView().Contains(View)); + } + + IoBufferCore* NewCore = new IoBufferCore(OuterBuffer.m_Buffer, View.GetData(), View.GetSize()); + NewCore->SetIsImmutable(true); + return SharedBuffer(NewCore); } SharedBuffer |