From 551636500b210a302f1a868b889eb82b5c87c2ac Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Wed, 1 Sep 2021 11:35:53 +0200 Subject: SharedBuffer: MakeOwned now returns a buffer instead of operating in-place CL15713705 --- zencore/sharedbuffer.cpp | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'zencore/sharedbuffer.cpp') diff --git a/zencore/sharedbuffer.cpp b/zencore/sharedbuffer.cpp index 9c788d29f..a14da1bf7 100644 --- a/zencore/sharedbuffer.cpp +++ b/zencore/sharedbuffer.cpp @@ -53,24 +53,30 @@ SharedBuffer::SharedBuffer(UniqueBuffer&& InBuffer) : m_Buffer(std::move(InBuffe { } -SharedBuffer& -SharedBuffer::MakeOwned() +SharedBuffer +SharedBuffer::MakeOwned() const& { if (IsOwned() || !m_Buffer) { return *this; } + else + { + return Clone(GetView()); + } +} - const uint64_t Size = m_Buffer->DataBytes(); - void* Buffer = Memory::Alloc(Size, 16); - IoBufferCore* NewOwner = new IoBufferCore(Buffer, Size); - NewOwner->SetIsOwnedByThis(true); - - memcpy(Buffer, m_Buffer->DataPointer(), Size); - - m_Buffer = NewOwner; - - return *this; +SharedBuffer +SharedBuffer::MakeOwned() && +{ + if (IsOwned()) + { + return std::move(*this); + } + else + { + return Clone(GetView()); + } } SharedBuffer -- cgit v1.2.3