diff --git a/src/client/linux/minidump_writer/directory_reader.h b/src/client/linux/minidump_writer/directory_reader.h index 62bba8779..eb1696943 100644 --- a/src/client/linux/minidump_writer/directory_reader.h +++ b/src/client/linux/minidump_writer/directory_reader.h @@ -95,9 +95,10 @@ class DirectoryReader { private: const int fd_; - bool hit_eof_; unsigned buf_used_; - uint8_t buf_[sizeof(struct kernel_dirent) + NAME_MAX + 1]; + alignas(struct kernel_dirent) + uint8_t buf_[sizeof(struct kernel_dirent) + NAME_MAX + 1]; + bool hit_eof_; }; } // namespace google_breakpad diff --git a/src/common/memory_allocator.h b/src/common/memory_allocator.h index 1c99913ad..02474a38a 100644 --- a/src/common/memory_allocator.h +++ b/src/common/memory_allocator.h @@ -76,7 +76,8 @@ class PageAllocator { if (current_page_ && page_size_ - page_offset_ >= bytes) { uint8_t* const ret = current_page_ + page_offset_; - page_offset_ += bytes; + // Keep page_offset_ aligned as the CPU natural word size. + page_offset_ += (bytes + sizeof(uintptr_t) - 1) & (~sizeof(uintptr_t) + 1); if (page_offset_ == page_size_) { page_offset_ = 0; current_page_ = NULL;