mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-01 19:58:15 +00:00
Merge pull request #227 from evanw/master
Round up allocation size to avoid misalignment (issue #226)
This commit is contained in:
@@ -416,7 +416,10 @@ class vector_downward {
|
||||
uint8_t *make_space(size_t len) {
|
||||
if (len > static_cast<size_t>(cur_ - buf_)) {
|
||||
auto old_size = size();
|
||||
auto largest_align = AlignOf<largest_scalar_t>();
|
||||
reserved_ += std::max(len, growth_policy(reserved_));
|
||||
// Round up to avoid undefined behavior from unaligned loads and stores.
|
||||
reserved_ = (reserved_ + (largest_align - 1)) & ~(largest_align - 1);
|
||||
auto new_buf = allocator_.allocate(reserved_);
|
||||
auto new_cur = new_buf + reserved_ - old_size;
|
||||
memcpy(new_cur, cur_, old_size);
|
||||
|
||||
Reference in New Issue
Block a user