The calculation of the object size may be incorrect when the size of
a field is smaller than the struct alignment. When such a struct is
used in an array field, the decoded object contains wrong values.
The alignment influences the object size. For example the following
struct has a calculated object size of 8 bytes, however due to
alignment the real size of the struct is 12 bytes:
struct test_bool {
bool b1; /* offset 0, size 1 */
/* 3-byte padding */
int i1; /* offset 4, size 4 */
bool b2; /* offset 8, size 1 */
/* 3-byte padding */
};
This commit changes the object size calculation and computes the size
with the offset and size of the last field in the struct (rounded up
by the struct alignment).
Fixes: #85121
Signed-off-by: Christoph Winklhofer <cj.winklhofer@gmail.com>
|
||
|---|---|---|
| .. | ||
| acpi | ||
| cpp | ||
| crc | ||
| hash | ||
| heap | ||
| libc | ||
| mem_blocks | ||
| net_buf | ||
| open-amp | ||
| os | ||
| posix | ||
| runtime | ||
| smf | ||
| utils | ||
| CMakeLists.txt | ||
| Kconfig | ||