Skip to content

Commit a378ba4

Browse files
committed
Add pg_nodiscard decorations to some functions
Especially for the list API such as lappend() forgetting to assign the return value is a common problem. Reviewed-by: Michael Paquier <michael@paquier.xyz> Discussion: https://www.postgresql.org/message-id/flat/e3753562-99cd-b65f-5aca-687dfd1ec2fc@2ndquadrant.com
1 parent c617aea commit a378ba4

File tree

2 files changed

+33
-33
lines changed

2 files changed

+33
-33
lines changed

src/include/nodes/pg_list.h

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -521,36 +521,36 @@ extern List *list_make3_impl(NodeTag t, ListCell datum1, ListCell datum2,
521521
extern List *list_make4_impl(NodeTag t, ListCell datum1, ListCell datum2,
522522
ListCell datum3, ListCell datum4);
523523

524-
extern List *lappend(List *list, void *datum);
525-
extern List *lappend_int(List *list, int datum);
526-
extern List *lappend_oid(List *list, Oid datum);
524+
extern pg_nodiscard List *lappend(List *list, void *datum);
525+
extern pg_nodiscard List *lappend_int(List *list, int datum);
526+
extern pg_nodiscard List *lappend_oid(List *list, Oid datum);
527527

528-
extern List *list_insert_nth(List *list, int pos, void *datum);
529-
extern List *list_insert_nth_int(List *list, int pos, int datum);
530-
extern List *list_insert_nth_oid(List *list, int pos, Oid datum);
528+
extern pg_nodiscard List *list_insert_nth(List *list, int pos, void *datum);
529+
extern pg_nodiscard List *list_insert_nth_int(List *list, int pos, int datum);
530+
extern pg_nodiscard List *list_insert_nth_oid(List *list, int pos, Oid datum);
531531

532-
extern List *lcons(void *datum, List *list);
533-
extern List *lcons_int(int datum, List *list);
534-
extern List *lcons_oid(Oid datum, List *list);
532+
extern pg_nodiscard List *lcons(void *datum, List *list);
533+
extern pg_nodiscard List *lcons_int(int datum, List *list);
534+
extern pg_nodiscard List *lcons_oid(Oid datum, List *list);
535535

536-
extern List *list_concat(List *list1, const List *list2);
537-
extern List *list_concat_copy(const List *list1, const List *list2);
536+
extern pg_nodiscard List *list_concat(List *list1, const List *list2);
537+
extern pg_nodiscard List *list_concat_copy(const List *list1, const List *list2);
538538

539-
extern List *list_truncate(List *list, int new_size);
539+
extern pg_nodiscard List *list_truncate(List *list, int new_size);
540540

541541
extern bool list_member(const List *list, const void *datum);
542542
extern bool list_member_ptr(const List *list, const void *datum);
543543
extern bool list_member_int(const List *list, int datum);
544544
extern bool list_member_oid(const List *list, Oid datum);
545545

546-
extern List *list_delete(List *list, void *datum);
547-
extern List *list_delete_ptr(List *list, void *datum);
548-
extern List *list_delete_int(List *list, int datum);
549-
extern List *list_delete_oid(List *list, Oid datum);
550-
extern List *list_delete_first(List *list);
551-
extern List *list_delete_last(List *list);
552-
extern List *list_delete_nth_cell(List *list, int n);
553-
extern List *list_delete_cell(List *list, ListCell *cell);
546+
extern pg_nodiscard List *list_delete(List *list, void *datum);
547+
extern pg_nodiscard List *list_delete_ptr(List *list, void *datum);
548+
extern pg_nodiscard List *list_delete_int(List *list, int datum);
549+
extern pg_nodiscard List *list_delete_oid(List *list, Oid datum);
550+
extern pg_nodiscard List *list_delete_first(List *list);
551+
extern pg_nodiscard List *list_delete_last(List *list);
552+
extern pg_nodiscard List *list_delete_nth_cell(List *list, int n);
553+
extern pg_nodiscard List *list_delete_cell(List *list, ListCell *cell);
554554

555555
extern List *list_union(const List *list1, const List *list2);
556556
extern List *list_union_ptr(const List *list1, const List *list2);
@@ -567,24 +567,24 @@ extern List *list_difference_ptr(const List *list1, const List *list2);
567567
extern List *list_difference_int(const List *list1, const List *list2);
568568
extern List *list_difference_oid(const List *list1, const List *list2);
569569

570-
extern List *list_append_unique(List *list, void *datum);
571-
extern List *list_append_unique_ptr(List *list, void *datum);
572-
extern List *list_append_unique_int(List *list, int datum);
573-
extern List *list_append_unique_oid(List *list, Oid datum);
570+
extern pg_nodiscard List *list_append_unique(List *list, void *datum);
571+
extern pg_nodiscard List *list_append_unique_ptr(List *list, void *datum);
572+
extern pg_nodiscard List *list_append_unique_int(List *list, int datum);
573+
extern pg_nodiscard List *list_append_unique_oid(List *list, Oid datum);
574574

575-
extern List *list_concat_unique(List *list1, const List *list2);
576-
extern List *list_concat_unique_ptr(List *list1, const List *list2);
577-
extern List *list_concat_unique_int(List *list1, const List *list2);
578-
extern List *list_concat_unique_oid(List *list1, const List *list2);
575+
extern pg_nodiscard List *list_concat_unique(List *list1, const List *list2);
576+
extern pg_nodiscard List *list_concat_unique_ptr(List *list1, const List *list2);
577+
extern pg_nodiscard List *list_concat_unique_int(List *list1, const List *list2);
578+
extern pg_nodiscard List *list_concat_unique_oid(List *list1, const List *list2);
579579

580580
extern void list_deduplicate_oid(List *list);
581581

582582
extern void list_free(List *list);
583583
extern void list_free_deep(List *list);
584584

585-
extern List *list_copy(const List *list);
586-
extern List *list_copy_tail(const List *list, int nskip);
587-
extern List *list_copy_deep(const List *oldlist);
585+
extern pg_nodiscard List *list_copy(const List *list);
586+
extern pg_nodiscard List *list_copy_tail(const List *list, int nskip);
587+
extern pg_nodiscard List *list_copy_deep(const List *oldlist);
588588

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

src/include/utils/palloc.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ extern void *MemoryContextAllocExtended(MemoryContext context,
7777
extern void *palloc(Size size);
7878
extern void *palloc0(Size size);
7979
extern void *palloc_extended(Size size, int flags);
80-
extern void *repalloc(void *pointer, Size size);
80+
extern pg_nodiscard void *repalloc(void *pointer, Size size);
8181
extern void pfree(void *pointer);
8282

8383
/*
@@ -95,7 +95,7 @@ extern void pfree(void *pointer);
9595

9696
/* Higher-limit allocators. */
9797
extern void *MemoryContextAllocHuge(MemoryContext context, Size size);
98-
extern void *repalloc_huge(void *pointer, Size size);
98+
extern pg_nodiscard void *repalloc_huge(void *pointer, Size size);
9999

100100
/*
101101
* Although this header file is nominally backend-only, certain frontend

0 commit comments

Comments
 (0)