From 12967bdf8a271faeaf160b88bc8c5c800703af82 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Sun, 4 Sep 2022 14:48:25 -0700 Subject: Take advantage of unique_ptr and move construction for Buffer Since Buffer has always implemented its copy constructor with a deep copy, its Members object will never have multiple owners. Change to unique_ptr. Also implement move constructors for Buffer, since there may be cases where a deep copy is not needed. --- libqpdf/Buffer.cc | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'libqpdf') diff --git a/libqpdf/Buffer.cc b/libqpdf/Buffer.cc index 4e8a17ae..98a524ce 100644 --- a/libqpdf/Buffer.cc +++ b/libqpdf/Buffer.cc @@ -48,12 +48,24 @@ Buffer::operator=(Buffer const& rhs) return *this; } +Buffer::Buffer(Buffer&& rhs) noexcept : + m(std::move(rhs.m)) +{ +} + +Buffer& +Buffer::operator=(Buffer&& rhs) noexcept +{ + std::swap(this->m, rhs.m); + return *this; +} + void Buffer::copy(Buffer const& rhs) { if (this != &rhs) { this->m = - std::shared_ptr(new Members(rhs.m->size, nullptr, true)); + std::unique_ptr(new Members(rhs.m->size, nullptr, true)); if (this->m->size) { memcpy(this->m->buf, rhs.m->buf, this->m->size); } -- cgit v1.2.3-54-g00ecf