From f52f848b951f2e162b62b09e24e6e7cc5c82b0ba Mon Sep 17 00:00:00 2001 From: Wouter van Oortmerssen Date: Fri, 16 Jun 2017 15:04:42 -0700 Subject: [PATCH] Added move assignment operator to DetachedBuffer. Change-Id: I4610946ac27d9d0d73c2fc2e4834bd2cfed88cdc Tested: on Linux. --- include/flatbuffers/flatbuffers.h | 10 ++++++++++ tests/test.cpp | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/include/flatbuffers/flatbuffers.h b/include/flatbuffers/flatbuffers.h index 1f45668c8..a7d80b204 100644 --- a/include/flatbuffers/flatbuffers.h +++ b/include/flatbuffers/flatbuffers.h @@ -453,6 +453,16 @@ class DetachedBuffer { other.size_ = 0; } + DetachedBuffer &operator=(DetachedBuffer &&other) { + std::swap(allocator_, other.allocator_); + std::swap(own_allocator_, other.own_allocator_); + std::swap(buf_, other.buf_); + std::swap(reserved_, other.reserved_); + std::swap(cur_, other.cur_); + std::swap(size_, other.size_); + return *this; + } + ~DetachedBuffer() { if (buf_) { assert(allocator_); diff --git a/tests/test.cpp b/tests/test.cpp index 840114c17..fa7fa6e11 100644 --- a/tests/test.cpp +++ b/tests/test.cpp @@ -1640,7 +1640,8 @@ int main(int /*argc*/, const char * /*argv*/[]) { // Run our various test suites: std::string rawbuf; - auto flatbuf = CreateFlatBufferTest(rawbuf); + auto flatbuf1 = CreateFlatBufferTest(rawbuf); + auto flatbuf = std::move(flatbuf1); // Test move assignment. AccessFlatBufferTest(reinterpret_cast(rawbuf.c_str()), rawbuf.length()); AccessFlatBufferTest(flatbuf.data(), flatbuf.size());