summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mongo/base/data_builder.h5
-rw-r--r--src/mongo/base/data_builder_test.cpp4
2 files changed, 6 insertions, 3 deletions
diff --git a/src/mongo/base/data_builder.h b/src/mongo/base/data_builder.h
index 5e39e639489..3299015c9cd 100644
--- a/src/mongo/base/data_builder.h
+++ b/src/mongo/base/data_builder.h
@@ -79,9 +79,12 @@ public:
}
DataBuilder& operator=(DataBuilder&& other) {
+ size_t size = other.size();
_buf = std::move(other._buf);
_capacity = other._capacity;
- _unwrittenSpaceCursor = {_buf.get(), _buf.get() + other.size()};
+ char* start = _buf.get() + size;
+ char* end = _buf.get() + _capacity;
+ _unwrittenSpaceCursor = {start, end};
other._capacity = 0;
other._unwrittenSpaceCursor = {nullptr, nullptr};
diff --git a/src/mongo/base/data_builder_test.cpp b/src/mongo/base/data_builder_test.cpp
index d497e78622e..b017384bbc3 100644
--- a/src/mongo/base/data_builder_test.cpp
+++ b/src/mongo/base/data_builder_test.cpp
@@ -153,7 +153,7 @@ TEST(DataBuilder, Clear) {
}
TEST(DataBuilder, Move) {
- DataBuilder db(1);
+ DataBuilder db(42);
ASSERT_EQUALS(true, db.writeAndAdvance<uint16_t>(1).isOK());
@@ -162,7 +162,7 @@ TEST(DataBuilder, Move) {
ConstDataRangeCursor cdrc = db2.getCursor();
ASSERT_EQUALS(static_cast<uint16_t>(1), cdrc.readAndAdvance<uint16_t>().getValue());
- ASSERT_EQUALS(2u, db2.capacity());
+ ASSERT_EQUALS(42u, db2.capacity());
ASSERT_EQUALS(2u, db2.size());
ASSERT_EQUALS(0u, db.capacity());