diff options
Diffstat (limited to 'src/backend/access')
-rw-r--r-- | src/backend/access/nbtree/nbtutils.c | 4 | ||||
-rw-r--r-- | src/backend/access/transam/multixact.c | 5 | ||||
-rw-r--r-- | src/backend/access/transam/twophase.c | 9 |
3 files changed, 8 insertions, 10 deletions
diff --git a/src/backend/access/nbtree/nbtutils.c b/src/backend/access/nbtree/nbtutils.c index 43e048cc0c0..379dac98a57 100644 --- a/src/backend/access/nbtree/nbtutils.c +++ b/src/backend/access/nbtree/nbtutils.c @@ -1836,7 +1836,7 @@ typedef struct BTVacInfo BTCycleId cycle_ctr; /* cycle ID most recently assigned */ int num_vacuums; /* number of currently active VACUUMs */ int max_vacuums; /* allocated length of vacuums[] array */ - BTOneVacInfo vacuums[1]; /* VARIABLE LENGTH ARRAY */ + BTOneVacInfo vacuums[FLEXIBLE_ARRAY_MEMBER]; } BTVacInfo; static BTVacInfo *btvacinfo; @@ -1984,7 +1984,7 @@ BTreeShmemSize(void) { Size size; - size = offsetof(BTVacInfo, vacuums[0]); + size = offsetof(BTVacInfo, vacuums); size = add_size(size, mul_size(MaxBackends, sizeof(BTOneVacInfo))); return size; } diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c index b2cf770f9f7..f9ca0283e25 100644 --- a/src/backend/access/transam/multixact.c +++ b/src/backend/access/transam/multixact.c @@ -258,7 +258,7 @@ typedef struct MultiXactStateData * stored in pg_control and used as truncation point for pg_multixact. At * checkpoint or restartpoint, unneeded segments are removed. */ - MultiXactId perBackendXactIds[1]; /* VARIABLE LENGTH ARRAY */ + MultiXactId perBackendXactIds[FLEXIBLE_ARRAY_MEMBER]; } MultiXactStateData; /* @@ -1744,8 +1744,9 @@ MultiXactShmemSize(void) { Size size; + /* We need 2*MaxOldestSlot + 1 perBackendXactIds[] entries */ #define SHARED_MULTIXACT_STATE_SIZE \ - add_size(sizeof(MultiXactStateData), \ + add_size(offsetof(MultiXactStateData, perBackendXactIds) + sizeof(MultiXactId), \ mul_size(sizeof(MultiXactId) * 2, MaxOldestSlot)) size = SHARED_MULTIXACT_STATE_SIZE; diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c index 6c7029edf0b..6edc22704cc 100644 --- a/src/backend/access/transam/twophase.c +++ b/src/backend/access/transam/twophase.c @@ -134,12 +134,9 @@ typedef struct TwoPhaseStateData /* Number of valid prepXacts entries. */ int numPrepXacts; - /* - * There are max_prepared_xacts items in this array, but C wants a - * fixed-size array. - */ - GlobalTransaction prepXacts[1]; /* VARIABLE LENGTH ARRAY */ -} TwoPhaseStateData; /* VARIABLE LENGTH STRUCT */ + /* There are max_prepared_xacts items in this array */ + GlobalTransaction prepXacts[FLEXIBLE_ARRAY_MEMBER]; +} TwoPhaseStateData; static TwoPhaseStateData *TwoPhaseState; |