mirror of
https://github.com/postgres/postgres.git
synced 2025-08-24 09:27:52 +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:
@@ -47,7 +47,7 @@ typedef struct
|
||||
{
|
||||
BlockNumber prev;
|
||||
uint32 freespace;
|
||||
char tupledata[1];
|
||||
char tupledata[FLEXIBLE_ARRAY_MEMBER];
|
||||
} GISTNodeBufferPage;
|
||||
|
||||
#define BUFFER_PAGE_DATA_OFFSET MAXALIGN(offsetof(GISTNodeBufferPage, tupledata))
|
||||
@@ -131,7 +131,8 @@ typedef struct GISTSearchItem
|
||||
/* we must store parentlsn to detect whether a split occurred */
|
||||
GISTSearchHeapItem heap; /* heap info, if heap tuple */
|
||||
} data;
|
||||
double distances[1]; /* array with numberOfOrderBys entries */
|
||||
double distances[FLEXIBLE_ARRAY_MEMBER]; /* numberOfOrderBys
|
||||
* entries */
|
||||
} GISTSearchItem;
|
||||
|
||||
#define GISTSearchItemIsHeap(item) ((item).blkno == InvalidBlockNumber)
|
||||
@@ -144,7 +145,7 @@ typedef struct GISTSearchItem
|
||||
typedef struct GISTScanOpaqueData
|
||||
{
|
||||
GISTSTATE *giststate; /* index information, see above */
|
||||
pairingheap *queue; /* queue of unvisited items */
|
||||
pairingheap *queue; /* queue of unvisited items */
|
||||
MemoryContext queueCxt; /* context holding the queue */
|
||||
bool qual_ok; /* false if qual can never be satisfied */
|
||||
bool firstCall; /* true until first gistgettuple call */
|
||||
|
Reference in New Issue
Block a user