aboutsummaryrefslogtreecommitdiff
path: root/zencore/sharedbuffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'zencore/sharedbuffer.cpp')
-rw-r--r--zencore/sharedbuffer.cpp13
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