mirror of
https://github.com/postgres/postgres.git
synced 2025-10-22 14:32:25 +03:00
Use FLEXIBLE_ARRAY_MEMBER in a bunch more places.
Replace some bogus "x[1]" declarations with "x[FLEXIBLE_ARRAY_MEMBER]". Aside from being more self-documenting, this should help prevent bogus warnings from static code analyzers and perhaps compiler misoptimizations. This patch is just a down payment on eliminating the whole problem, but it gets rid of a lot of easy-to-fix cases. Note that the main problem with doing this is that one must no longer rely on computing sizeof(the containing struct), since the result would be compiler-dependent. Instead use offsetof(struct, lastfield). Autoconf also warns against spelling that offsetof(struct, lastfield[0]). Michael Paquier, review and additional fixes by me.
This commit is contained in:
@@ -426,7 +426,7 @@ typedef struct spgxlogMoveLeafs
|
||||
* the dead tuple from the source
|
||||
*----------
|
||||
*/
|
||||
OffsetNumber offsets[1];
|
||||
OffsetNumber offsets[FLEXIBLE_ARRAY_MEMBER];
|
||||
} spgxlogMoveLeafs;
|
||||
|
||||
#define SizeOfSpgxlogMoveLeafs offsetof(spgxlogMoveLeafs, offsets)
|
||||
@@ -534,7 +534,7 @@ typedef struct spgxlogPickSplit
|
||||
* list of leaf tuples, length nInsert (unaligned!)
|
||||
*----------
|
||||
*/
|
||||
OffsetNumber offsets[1];
|
||||
OffsetNumber offsets[FLEXIBLE_ARRAY_MEMBER];
|
||||
} spgxlogPickSplit;
|
||||
|
||||
#define SizeOfSpgxlogPickSplit offsetof(spgxlogPickSplit, offsets)
|
||||
@@ -558,7 +558,7 @@ typedef struct spgxlogVacuumLeaf
|
||||
* tuple numbers to insert in nextOffset links
|
||||
*----------
|
||||
*/
|
||||
OffsetNumber offsets[1];
|
||||
OffsetNumber offsets[FLEXIBLE_ARRAY_MEMBER];
|
||||
} spgxlogVacuumLeaf;
|
||||
|
||||
#define SizeOfSpgxlogVacuumLeaf offsetof(spgxlogVacuumLeaf, offsets)
|
||||
@@ -571,7 +571,7 @@ typedef struct spgxlogVacuumRoot
|
||||
spgxlogState stateSrc;
|
||||
|
||||
/* offsets of tuples to delete follow */
|
||||
OffsetNumber offsets[1];
|
||||
OffsetNumber offsets[FLEXIBLE_ARRAY_MEMBER];
|
||||
} spgxlogVacuumRoot;
|
||||
|
||||
#define SizeOfSpgxlogVacuumRoot offsetof(spgxlogVacuumRoot, offsets)
|
||||
@@ -583,7 +583,7 @@ typedef struct spgxlogVacuumRedirect
|
||||
TransactionId newestRedirectXid; /* newest XID of removed redirects */
|
||||
|
||||
/* offsets of redirect tuples to make placeholders follow */
|
||||
OffsetNumber offsets[1];
|
||||
OffsetNumber offsets[FLEXIBLE_ARRAY_MEMBER];
|
||||
} spgxlogVacuumRedirect;
|
||||
|
||||
#define SizeOfSpgxlogVacuumRedirect offsetof(spgxlogVacuumRedirect, offsets)
|
||||
|
Reference in New Issue
Block a user