diff options
-rw-r--r-- | fnet/src/vespa/fnet/databuffer.cpp | 4 | ||||
-rw-r--r-- | fnet/src/vespa/fnet/frt/values.cpp | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/fnet/src/vespa/fnet/databuffer.cpp b/fnet/src/vespa/fnet/databuffer.cpp index f6a7e1c25e5..7820ae2dfcf 100644 --- a/fnet/src/vespa/fnet/databuffer.cpp +++ b/fnet/src/vespa/fnet/databuffer.cpp @@ -94,7 +94,9 @@ FNET_DataBuffer::Pack(uint32_t needbytes) bufsize *= 2; Alloc newBuf(Alloc::alloc(bufsize)); - memcpy(newBuf.get(), _datapt, GetDataLen()); + if (_datapt != nullptr) { + memcpy(newBuf.get(), _datapt, GetDataLen()); + } _ownedBuf.swap(newBuf); _bufstart = static_cast<char *>(_ownedBuf.get()); _freept = _bufstart + GetDataLen(); diff --git a/fnet/src/vespa/fnet/frt/values.cpp b/fnet/src/vespa/fnet/frt/values.cpp index dedefd64323..58bd5b09bf7 100644 --- a/fnet/src/vespa/fnet/frt/values.cpp +++ b/fnet/src/vespa/fnet/frt/values.cpp @@ -1385,6 +1385,9 @@ FRT_Values::EncodeBig(FNET_DataBuffer *dst) const char *p = _typeString; dst->WriteInt32Fast(numValues); + if (numValues == 0) { + return; // p may be nullptr, don't try to write what does not exist. + } dst->WriteBytesFast(p, numValues); for (uint32_t i = 0; i < numValues; i++, p++) { |