mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-02 04:04:19 +00:00
* [C++] Add a failing unit test for #7516 (Rare bad buffer content alignment if sizeof(T) != alignof(T)) * [C++] Fix final buffer alignment when using an array of structs * A struct can have an arbitrary size and therefore sizeof(struct) == alignof(struct) does not hold anymore as for value primitives. * This patch fixes this by introducing alignment parameters to various CreateVector*/StartVector calls. * Closes #7516
25 lines
417 B
Plaintext
25 lines
417 B
Plaintext
// sizeof(BadAlignmentSmall) == 12
|
|
// alignof(BadAlignmentSmall) == 4
|
|
struct BadAlignmentSmall {
|
|
var_0: uint;
|
|
var_1: uint;
|
|
var_2: uint;
|
|
}
|
|
|
|
// sizeof(BadAlignmentLarge) == 8
|
|
// alignof(BadAlignmentLarge) == 8
|
|
struct BadAlignmentLarge {
|
|
var_0: ulong;
|
|
}
|
|
|
|
table OuterLarge {
|
|
large: BadAlignmentLarge;
|
|
}
|
|
|
|
table BadAlignmentRoot {
|
|
large: OuterLarge;
|
|
small: [BadAlignmentSmall];
|
|
}
|
|
|
|
root_type BadAlignmentRoot;
|