diff options
| author | Peter Eisentraut <peter@eisentraut.org> | 2025-12-03 09:54:15 +0100 |
|---|---|---|
| committer | Peter Eisentraut <peter@eisentraut.org> | 2025-12-03 09:54:15 +0100 |
| commit | 756a43689324b473ee07549a6eb7a53a203df5ad (patch) | |
| tree | b72ab16ee77de3e82288c76c7b9493b93d378216 /src/backend/access/gin/gindatapage.c | |
| parent | 8c6bbd674ed810df9af5ec42f6b38c205e3ad365 (diff) | |
Don't rely on pointer arithmetic with Pointer type
The comment for the Pointer type says 'XXX Pointer arithmetic is done
with this, so it can't be void * under "true" ANSI compilers.'. This
fixes that. Change from Pointer to use char * explicitly where
pointer arithmetic is needed. This makes the meaning of the code
clearer locally and removes a dependency on the actual definition of
the Pointer type. (The definition of the Pointer type is not changed
in this commit.)
Reviewed-by: Chao Li <li.evan.chao@gmail.com>
Reviewed-by: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Discussion: https://www.postgresql.org/message-id/4154950a-47ae-4223-bd01-1235cc50e933%40eisentraut.org
Diffstat (limited to 'src/backend/access/gin/gindatapage.c')
| -rw-r--r-- | src/backend/access/gin/gindatapage.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/backend/access/gin/gindatapage.c b/src/backend/access/gin/gindatapage.c index ab19a854cd7..8d9e3727c51 100644 --- a/src/backend/access/gin/gindatapage.c +++ b/src/backend/access/gin/gindatapage.c @@ -140,20 +140,20 @@ GinDataLeafPageGetItems(Page page, int *nitems, ItemPointerData advancePast) { GinPostingList *seg = GinDataLeafPageGetPostingList(page); Size len = GinDataLeafPageGetPostingListSize(page); - Pointer endptr = ((Pointer) seg) + len; + char *endptr = (char *) seg + len; GinPostingList *next; /* Skip to the segment containing advancePast+1 */ if (ItemPointerIsValid(&advancePast)) { next = GinNextPostingListSegment(seg); - while ((Pointer) next < endptr && + while ((char *) next < endptr && ginCompareItemPointers(&next->first, &advancePast) <= 0) { seg = next; next = GinNextPostingListSegment(seg); } - len = endptr - (Pointer) seg; + len = endptr - (char *) seg; } if (len > 0) @@ -1371,8 +1371,8 @@ disassembleLeaf(Page page) { disassembledLeaf *leaf; GinPostingList *seg; - Pointer segbegin; - Pointer segend; + char *segbegin; + char *segend; leaf = palloc0(sizeof(disassembledLeaf)); dlist_init(&leaf->segments); @@ -1383,9 +1383,9 @@ disassembleLeaf(Page page) * Create a leafSegmentInfo entry for each segment. */ seg = GinDataLeafPageGetPostingList(page); - segbegin = (Pointer) seg; + segbegin = (char *) seg; segend = segbegin + GinDataLeafPageGetPostingListSize(page); - while ((Pointer) seg < segend) + while ((char *) seg < segend) { leafSegmentInfo *seginfo = palloc(sizeof(leafSegmentInfo)); @@ -1779,7 +1779,7 @@ createPostingTree(Relation index, ItemPointerData *items, uint32 nitems, Buffer buffer; Page tmppage; Page page; - Pointer ptr; + char *ptr; int nrootitems; int rootsize; bool is_build = (buildStats != NULL); @@ -1795,7 +1795,7 @@ createPostingTree(Relation index, ItemPointerData *items, uint32 nitems, */ nrootitems = 0; rootsize = 0; - ptr = (Pointer) GinDataLeafPageGetPostingList(tmppage); + ptr = (char *) GinDataLeafPageGetPostingList(tmppage); while (nrootitems < nitems) { GinPostingList *segment; |
