diff --git a/include/openspace/util/syncbuffer.inl b/include/openspace/util/syncbuffer.inl index 0ea2ab3d61..99860e7bdc 100644 --- a/include/openspace/util/syncbuffer.inl +++ b/include/openspace/util/syncbuffer.inl @@ -30,7 +30,11 @@ namespace openspace { template void SyncBuffer::encode(const T& v) { const size_t size = sizeof(T); - ghoul_assert(_encodeOffset + size < _n, ""); + + size_t anticpatedBufferSize = _encodeOffset + size; + if (anticpatedBufferSize >= _n) { + _dataStream.resize(anticpatedBufferSize); + } memcpy(_dataStream.data() + _encodeOffset, &v, size); _encodeOffset += size; diff --git a/src/util/syncbuffer.cpp b/src/util/syncbuffer.cpp index f89204c542..b74446c3d0 100644 --- a/src/util/syncbuffer.cpp +++ b/src/util/syncbuffer.cpp @@ -35,9 +35,13 @@ SyncBuffer::SyncBuffer(size_t n) SyncBuffer::~SyncBuffer() {} // NOLINT void SyncBuffer::encode(const std::string& s) { - ghoul_assert(_encodeOffset + sizeof(char) * s.size() + sizeof(int32_t) < _n, ""); + int32_t anticpatedBufferSize = _encodeOffset + (sizeof(char) * s.size()) + + sizeof(int32_t); + if (anticpatedBufferSize >= _n) { + _dataStream.resize(anticpatedBufferSize); + } - int32_t length = static_cast(s.length()); + int32_t length = static_cast(s.size() * sizeof(char)); memcpy( _dataStream.data() + _encodeOffset, reinterpret_cast(&length),