Message data vector buffer should resize instead of reserve, preserving data on growth

This commit is contained in:
Dan Paulat 2021-06-20 20:51:15 -05:00
parent f0386cda27
commit d648c1db08

View file

@ -78,7 +78,7 @@ MessageInfo MessageFactory::Create(std::istream& is)
if (segment == 1) if (segment == 1)
{ {
// Estimate total message size // Estimate total message size
messageData_.reserve(dataSize * totalSegments); messageData_.resize(dataSize * totalSegments);
messageBufferStream_.clear(); messageBufferStream_.clear();
bufferedSize_ = 0; bufferedSize_ = 0;
} }
@ -93,7 +93,7 @@ MessageInfo MessageFactory::Create(std::istream& is)
std::max<uint16_t>(totalSegments - segment + 1, 100u); std::max<uint16_t>(totalSegments - segment + 1, 100u);
size_t remainingSize = remainingSegments * dataSize; size_t remainingSize = remainingSegments * dataSize;
messageData_.reserve(bufferedSize_ + remainingSize); messageData_.resize(bufferedSize_ + remainingSize);
} }
is.read(messageData_.data() + bufferedSize_, dataSize); is.read(messageData_.data() + bufferedSize_, dataSize);