Skip to content

Commit 05cbd6c

Browse files
committed
Swap order of extern/static and pg_nodiscard
When pg_nodiscard was first added, the C standard draft had it as a function specifier, and so the code comment about placement was written with that in mind. The final C23 standard has it as an attribute and the placement rules are a bit different for that. Specifically, it needs to be before extern or static. (Or at least both current clang and gcc require that.) So just swap these. (To be clear: The current implementation with gcc attributes doesn't care. This change is just for maximum forward compatibility for non-gcc compilers.) This also keeps the order consistent with the previously introduced pg_noreturn. Also update the code comment to reflect the mentioned developments since its introduction. Reviewed-by: Dagfinn Ilmari Mannsåker <ilmari@ilmari.org> Reviewed-by: Andres Freund <andres@anarazel.de> Discussion: https://www.postgresql.org/message-id/flat/pxr5b3z7jmkpenssra5zroxi7qzzp6eswuggokw64axmdixpnk@zbwxuq7gbbcw
1 parent 01261fb commit 05cbd6c

File tree

6 files changed

+45
-45
lines changed

6 files changed

+45
-45
lines changed

src/include/c.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,9 @@
135135

136136
/*
137137
* pg_nodiscard means the compiler should warn if the result of a function
138-
* call is ignored. The name "nodiscard" is chosen in alignment with
139-
* (possibly future) C and C++ standards. For maximum compatibility, use it
140-
* as a function declaration specifier, so it goes before the return type.
138+
* call is ignored. The name "nodiscard" is chosen in alignment with the C23
139+
* standard attribute with the same name. For maximum forward compatibility,
140+
* place it before the declaration.
141141
*/
142142
#ifdef __GNUC__
143143
#define pg_nodiscard __attribute__((warn_unused_result))

src/include/common/base64.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
#define BASE64_H
1212

1313
/* base 64 */
14-
extern pg_nodiscard int pg_b64_encode(const char *src, int len, char *dst, int dstlen);
15-
extern pg_nodiscard int pg_b64_decode(const char *src, int len, char *dst, int dstlen);
14+
pg_nodiscard extern int pg_b64_encode(const char *src, int len, char *dst, int dstlen);
15+
pg_nodiscard extern int pg_b64_decode(const char *src, int len, char *dst, int dstlen);
1616
extern int pg_b64_enc_len(int srclen);
1717
extern int pg_b64_dec_len(int srclen);
1818

src/include/nodes/pg_list.h

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -608,39 +608,39 @@ extern List *list_make5_impl(NodeTag t, ListCell datum1, ListCell datum2,
608608
ListCell datum3, ListCell datum4,
609609
ListCell datum5);
610610

611-
extern pg_nodiscard List *lappend(List *list, void *datum);
612-
extern pg_nodiscard List *lappend_int(List *list, int datum);
613-
extern pg_nodiscard List *lappend_oid(List *list, Oid datum);
614-
extern pg_nodiscard List *lappend_xid(List *list, TransactionId datum);
611+
pg_nodiscard extern List *lappend(List *list, void *datum);
612+
pg_nodiscard extern List *lappend_int(List *list, int datum);
613+
pg_nodiscard extern List *lappend_oid(List *list, Oid datum);
614+
pg_nodiscard extern List *lappend_xid(List *list, TransactionId datum);
615615

616-
extern pg_nodiscard List *list_insert_nth(List *list, int pos, void *datum);
617-
extern pg_nodiscard List *list_insert_nth_int(List *list, int pos, int datum);
618-
extern pg_nodiscard List *list_insert_nth_oid(List *list, int pos, Oid datum);
616+
pg_nodiscard extern List *list_insert_nth(List *list, int pos, void *datum);
617+
pg_nodiscard extern List *list_insert_nth_int(List *list, int pos, int datum);
618+
pg_nodiscard extern List *list_insert_nth_oid(List *list, int pos, Oid datum);
619619

620-
extern pg_nodiscard List *lcons(void *datum, List *list);
621-
extern pg_nodiscard List *lcons_int(int datum, List *list);
622-
extern pg_nodiscard List *lcons_oid(Oid datum, List *list);
620+
pg_nodiscard extern List *lcons(void *datum, List *list);
621+
pg_nodiscard extern List *lcons_int(int datum, List *list);
622+
pg_nodiscard extern List *lcons_oid(Oid datum, List *list);
623623

624-
extern pg_nodiscard List *list_concat(List *list1, const List *list2);
625-
extern pg_nodiscard List *list_concat_copy(const List *list1, const List *list2);
624+
pg_nodiscard extern List *list_concat(List *list1, const List *list2);
625+
pg_nodiscard extern List *list_concat_copy(const List *list1, const List *list2);
626626

627-
extern pg_nodiscard List *list_truncate(List *list, int new_size);
627+
pg_nodiscard extern List *list_truncate(List *list, int new_size);
628628

629629
extern bool list_member(const List *list, const void *datum);
630630
extern bool list_member_ptr(const List *list, const void *datum);
631631
extern bool list_member_int(const List *list, int datum);
632632
extern bool list_member_oid(const List *list, Oid datum);
633633
extern bool list_member_xid(const List *list, TransactionId datum);
634634

635-
extern pg_nodiscard List *list_delete(List *list, void *datum);
636-
extern pg_nodiscard List *list_delete_ptr(List *list, void *datum);
637-
extern pg_nodiscard List *list_delete_int(List *list, int datum);
638-
extern pg_nodiscard List *list_delete_oid(List *list, Oid datum);
639-
extern pg_nodiscard List *list_delete_first(List *list);
640-
extern pg_nodiscard List *list_delete_last(List *list);
641-
extern pg_nodiscard List *list_delete_first_n(List *list, int n);
642-
extern pg_nodiscard List *list_delete_nth_cell(List *list, int n);
643-
extern pg_nodiscard List *list_delete_cell(List *list, ListCell *cell);
635+
pg_nodiscard extern List *list_delete(List *list, void *datum);
636+
pg_nodiscard extern List *list_delete_ptr(List *list, void *datum);
637+
pg_nodiscard extern List *list_delete_int(List *list, int datum);
638+
pg_nodiscard extern List *list_delete_oid(List *list, Oid datum);
639+
pg_nodiscard extern List *list_delete_first(List *list);
640+
pg_nodiscard extern List *list_delete_last(List *list);
641+
pg_nodiscard extern List *list_delete_first_n(List *list, int n);
642+
pg_nodiscard extern List *list_delete_nth_cell(List *list, int n);
643+
pg_nodiscard extern List *list_delete_cell(List *list, ListCell *cell);
644644

645645
extern List *list_union(const List *list1, const List *list2);
646646
extern List *list_union_ptr(const List *list1, const List *list2);
@@ -657,25 +657,25 @@ extern List *list_difference_ptr(const List *list1, const List *list2);
657657
extern List *list_difference_int(const List *list1, const List *list2);
658658
extern List *list_difference_oid(const List *list1, const List *list2);
659659

660-
extern pg_nodiscard List *list_append_unique(List *list, void *datum);
661-
extern pg_nodiscard List *list_append_unique_ptr(List *list, void *datum);
662-
extern pg_nodiscard List *list_append_unique_int(List *list, int datum);
663-
extern pg_nodiscard List *list_append_unique_oid(List *list, Oid datum);
660+
pg_nodiscard extern List *list_append_unique(List *list, void *datum);
661+
pg_nodiscard extern List *list_append_unique_ptr(List *list, void *datum);
662+
pg_nodiscard extern List *list_append_unique_int(List *list, int datum);
663+
pg_nodiscard extern List *list_append_unique_oid(List *list, Oid datum);
664664

665-
extern pg_nodiscard List *list_concat_unique(List *list1, const List *list2);
666-
extern pg_nodiscard List *list_concat_unique_ptr(List *list1, const List *list2);
667-
extern pg_nodiscard List *list_concat_unique_int(List *list1, const List *list2);
668-
extern pg_nodiscard List *list_concat_unique_oid(List *list1, const List *list2);
665+
pg_nodiscard extern List *list_concat_unique(List *list1, const List *list2);
666+
pg_nodiscard extern List *list_concat_unique_ptr(List *list1, const List *list2);
667+
pg_nodiscard extern List *list_concat_unique_int(List *list1, const List *list2);
668+
pg_nodiscard extern List *list_concat_unique_oid(List *list1, const List *list2);
669669

670670
extern void list_deduplicate_oid(List *list);
671671

672672
extern void list_free(List *list);
673673
extern void list_free_deep(List *list);
674674

675-
extern pg_nodiscard List *list_copy(const List *oldlist);
676-
extern pg_nodiscard List *list_copy_head(const List *oldlist, int len);
677-
extern pg_nodiscard List *list_copy_tail(const List *oldlist, int nskip);
678-
extern pg_nodiscard List *list_copy_deep(const List *oldlist);
675+
pg_nodiscard extern List *list_copy(const List *oldlist);
676+
pg_nodiscard extern List *list_copy_head(const List *oldlist, int len);
677+
pg_nodiscard extern List *list_copy_tail(const List *oldlist, int nskip);
678+
pg_nodiscard extern List *list_copy_deep(const List *oldlist);
679679

680680
typedef int (*list_sort_comparator) (const ListCell *a, const ListCell *b);
681681
extern void list_sort(List *list, list_sort_comparator cmp);

src/include/storage/buffile.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ typedef struct BufFile BufFile;
3838

3939
extern BufFile *BufFileCreateTemp(bool interXact);
4040
extern void BufFileClose(BufFile *file);
41-
extern pg_nodiscard size_t BufFileRead(BufFile *file, void *ptr, size_t size);
41+
pg_nodiscard extern size_t BufFileRead(BufFile *file, void *ptr, size_t size);
4242
extern void BufFileReadExact(BufFile *file, void *ptr, size_t size);
4343
extern size_t BufFileReadMaybeEOF(BufFile *file, void *ptr, size_t size, bool eofOK);
4444
extern void BufFileWrite(BufFile *file, const void *ptr, size_t size);

src/include/utils/guc.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ extern ArrayType *GUCArrayDelete(ArrayType *array, const char *name);
444444
extern ArrayType *GUCArrayReset(ArrayType *array);
445445

446446
extern void *guc_malloc(int elevel, size_t size);
447-
extern pg_nodiscard void *guc_realloc(int elevel, void *old, size_t size);
447+
pg_nodiscard extern void *guc_realloc(int elevel, void *old, size_t size);
448448
extern char *guc_strdup(int elevel, const char *src);
449449
extern void guc_free(void *ptr);
450450

src/include/utils/palloc.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,10 @@ extern void *palloc(Size size);
7979
extern void *palloc0(Size size);
8080
extern void *palloc_extended(Size size, int flags);
8181
extern void *palloc_aligned(Size size, Size alignto, int flags);
82-
extern pg_nodiscard void *repalloc(void *pointer, Size size);
83-
extern pg_nodiscard void *repalloc_extended(void *pointer,
82+
pg_nodiscard extern void *repalloc(void *pointer, Size size);
83+
pg_nodiscard extern void *repalloc_extended(void *pointer,
8484
Size size, int flags);
85-
extern pg_nodiscard void *repalloc0(void *pointer, Size oldsize, Size size);
85+
pg_nodiscard extern void *repalloc0(void *pointer, Size oldsize, Size size);
8686
extern void pfree(void *pointer);
8787

8888
/*
@@ -110,7 +110,7 @@ extern void pfree(void *pointer);
110110

111111
/* Higher-limit allocators. */
112112
extern void *MemoryContextAllocHuge(MemoryContext context, Size size);
113-
extern pg_nodiscard void *repalloc_huge(void *pointer, Size size);
113+
pg_nodiscard extern void *repalloc_huge(void *pointer, Size size);
114114

115115
/*
116116
* Although this header file is nominally backend-only, certain frontend

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy