fix setAscii, setUnicode
This commit is contained in:
@@ -260,6 +260,9 @@ size_t StructLayout::setAscii(
|
|||||||
auto ptr = reinterpret_cast<char*>(dst + field.offset);
|
auto ptr = reinterpret_cast<char*>(dst + field.offset);
|
||||||
auto size = std::min(value.size(), static_cast<std::size_t>(field.elements));
|
auto size = std::min(value.size(), static_cast<std::size_t>(field.elements));
|
||||||
std::memcpy(ptr, value.data(), size);
|
std::memcpy(ptr, value.data(), size);
|
||||||
|
if (size < field.elements) {
|
||||||
|
std::memset(ptr + size, 0, field.elements - size);
|
||||||
|
}
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -274,7 +277,7 @@ size_t StructLayout::setUnicode(
|
|||||||
auto ptr = reinterpret_cast<char*>(dst + field.offset);
|
auto ptr = reinterpret_cast<char*>(dst + field.offset);
|
||||||
std::memcpy(ptr, value.data(), size);
|
std::memcpy(ptr, value.data(), size);
|
||||||
if (size < field.elements) {
|
if (size < field.elements) {
|
||||||
ptr[size] = '\0';
|
std::memset(ptr + size, 0, field.elements - size);
|
||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ namespace util {
|
|||||||
return dataio::le2h(*(reinterpret_cast<const T*>(src) + offset));
|
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
|
/// @brief Simple heap implementation for memory-optimal sparse array of
|
||||||
/// small different structures
|
/// small different structures
|
||||||
/// @note alignment is not impemented
|
/// @note alignment is not impemented
|
||||||
|
|||||||
Reference in New Issue
Block a user