diff --git a/src/data/StructLayout.cpp b/src/data/StructLayout.cpp index 4f5368dd..91cae4f6 100644 --- a/src/data/StructLayout.cpp +++ b/src/data/StructLayout.cpp @@ -260,6 +260,9 @@ size_t StructLayout::setAscii( auto ptr = reinterpret_cast(dst + field.offset); auto size = std::min(value.size(), static_cast(field.elements)); std::memcpy(ptr, value.data(), size); + if (size < field.elements) { + std::memset(ptr + size, 0, field.elements - size); + } return size; } @@ -274,7 +277,7 @@ size_t StructLayout::setUnicode( auto ptr = reinterpret_cast(dst + field.offset); std::memcpy(ptr, value.data(), size); if (size < field.elements) { - ptr[size] = '\0'; + std::memset(ptr + size, 0, field.elements - size); } return size; } diff --git a/src/util/SmallHeap.hpp b/src/util/SmallHeap.hpp index 3774e064..8a6ff929 100644 --- a/src/util/SmallHeap.hpp +++ b/src/util/SmallHeap.hpp @@ -15,7 +15,6 @@ namespace util { return dataio::le2h(*(reinterpret_cast(src) + offset)); } - // TODO: make it safer (minimize raw temporary pointers use) /// @brief Simple heap implementation for memory-optimal sparse array of /// small different structures /// @note alignment is not impemented