fix setAscii, setUnicode

This commit is contained in:
MihailRis 2024-10-01 22:06:57 +03:00
parent 024dccb135
commit 99e8764907
2 changed files with 4 additions and 2 deletions

View File

@ -260,6 +260,9 @@ size_t StructLayout::setAscii(
auto ptr = reinterpret_cast<char*>(dst + field.offset);
auto size = std::min(value.size(), static_cast<std::size_t>(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<char*>(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;
}

View File

@ -15,7 +15,6 @@ namespace util {
return dataio::le2h(*(reinterpret_cast<const T*>(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