From 6deaff58a9d5208f3c2a3e57fd17ecac17fe34ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Sat, 4 Dec 2021 12:55:26 +0200 Subject: MDEV-27058 fixup: GCC 11 -march=i686 -Warray-bounds page_zip_des_t::clear(): Avoid a bogus GCC warning with some pointer arithmetics. Yes, storing the unrelated member "fix" in this object is ugly, but it avoids memory alignment overhead on 64-bit architectures. --- storage/innobase/include/page0types.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/storage/innobase/include/page0types.h b/storage/innobase/include/page0types.h index d18cea66b30..885d2290f7c 100644 --- a/storage/innobase/include/page0types.h +++ b/storage/innobase/include/page0types.h @@ -113,9 +113,10 @@ struct page_zip_des_t #endif /* UNIV_DEBUG */ void clear() { - memset((void*) this, 0, sizeof(data) + sizeof(uint32_t)); - ut_d(m_start = 0); - ut_d(m_external = false); + /* Clear everything except the member "fix". */ + memset((void*) this, 0, + reinterpret_cast(&fix) + - reinterpret_cast(this)); } private: -- cgit v1.2.1