From 99bc8dae81b469ce0a9907e94ab47c16ef8c0539 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Thu, 13 May 2021 12:51:43 +0200 Subject: SharedBuffer::MakeView now validates range against outer --- zencore/sharedbuffer.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'zencore/sharedbuffer.cpp') 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(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 -- cgit v1.2.3