Fix alignment of stack variable
authorJohn Naylor <john.naylor@postgresql.org>
Mon, 8 Apr 2024 03:40:20 +0000 (10:40 +0700)
committerJohn Naylor <john.naylor@postgresql.org>
Mon, 8 Apr 2024 03:40:20 +0000 (10:40 +0700)
Declare with union similar to PGAlignedBlock.

Report and fix by Andres Freund

Discussion: https://postgr.es/m/20240407190731.izm3mdazednrsiqk%40awork3.anarazel.de

src/backend/access/common/tidstore.c

index e1a7e824690c55af894a4870a77dfc32554671a8..629390a1f88e02d912e12abeb39ff02ba4778cda 100644 (file)
@@ -303,8 +303,12 @@ void
 TidStoreSetBlockOffsets(TidStore *ts, BlockNumber blkno, OffsetNumber *offsets,
                                                int num_offsets)
 {
-       char            data[MaxBlocktableEntrySize];
-       BlocktableEntry *page = (BlocktableEntry *) data;
+       union
+       {
+               char            data[MaxBlocktableEntrySize];
+               BlocktableEntry force_align_entry;
+       }                       data;
+       BlocktableEntry *page = (BlocktableEntry *) data.data;
        bitmapword      word;
        int                     wordnum;
        int                     next_word_threshold;