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;