diff options
Diffstat (limited to 'databuffer.cpp')
| -rw-r--r-- | databuffer.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/databuffer.cpp b/databuffer.cpp index f2031842..92709572 100644 --- a/databuffer.cpp +++ b/databuffer.cpp @@ -47,6 +47,11 @@ DataBuffer::DataBuffer(const DataBuffer& buf) m_buffer = BNDuplicateDataBuffer(buf.m_buffer); } +DataBuffer::DataBuffer(DataBuffer&& buf) +{ + m_buffer = buf.m_buffer; + buf.m_buffer = BNCreateDataBuffer(nullptr, 0); +} DataBuffer::DataBuffer(BNDataBuffer* buf) { @@ -62,11 +67,27 @@ DataBuffer::~DataBuffer() DataBuffer& DataBuffer::operator=(const DataBuffer& buf) { - BNFreeDataBuffer(m_buffer); - m_buffer = BNDuplicateDataBuffer(buf.m_buffer); + if (this != &buf) + { + BNFreeDataBuffer(m_buffer); + m_buffer = BNDuplicateDataBuffer(buf.m_buffer); + } + return *this; } +DataBuffer& DataBuffer::operator=(DataBuffer&& buf) +{ + if (this != &buf) + { + BNClearDataBuffer(m_buffer); + BNDataBuffer* temp = m_buffer; + m_buffer = buf.m_buffer; + buf.m_buffer = temp; + } + + return *this; +} void* DataBuffer::GetData() { |
