v1-0001-Don-t-check-for-NULL-before-calling-bms_free-in-t.patch

application/octet-stream

Filename: v1-0001-Don-t-check-for-NULL-before-calling-bms_free-in-t.patch
Type: application/octet-stream
Part: 0
Message: Re: [PATCH] Add tests for Bitmapset

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: format-patch
Series: patch v1-0001
Subject: Don't check for NULL before calling bms_free() in tests
File+
src/test/modules/test_bitmapset/test_bitmapset.c 40 81
From 8c8fc8c7dc1e0c7752c35a33044f107540f94e61 Mon Sep 17 00:00:00 2001
From: Greg Burd <greg@burd.me>
Date: Tue, 30 Sep 2025 05:15:40 -0400
Subject: [PATCH v1] Don't check for NULL before calling bms_free() in tests

The bms_free() function safely handles NULL input, so checking for NULL
before calling it is unnecessary. Since tests serve as reference examples
for proper API usage, they should demonstrate the correct calling pattern
without redundant NULL checks.

Author: Greg Burd <greg@burd.me>
Reported-by: David Rowley<dgrowleyml@gmail.com>
Reviewed-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://postgr.es/m/7BD1ABDB-B03A-464A-9BA9-A73B55AD8A1F@getmailspring.com
---
 .../modules/test_bitmapset/test_bitmapset.c   | 121 ++++++------------
 1 file changed, 40 insertions(+), 81 deletions(-)

diff --git a/src/test/modules/test_bitmapset/test_bitmapset.c b/src/test/modules/test_bitmapset/test_bitmapset.c
index 2e821320836..7a706662e9f 100644
--- a/src/test/modules/test_bitmapset/test_bitmapset.c
+++ b/src/test/modules/test_bitmapset/test_bitmapset.c
@@ -109,8 +109,7 @@ test_bms_add_member(PG_FUNCTION_ARGS)
 	bms = bms_add_member(bms, member);
 	result = BITMAPSET_TO_TEXT(bms);
 
-	if (bms)
-		bms_free(bms);
+	bms_free(bms);
 
 	PG_RETURN_TEXT_P(result);
 }
@@ -131,8 +130,7 @@ test_bms_add_members(PG_FUNCTION_ARGS)
 	/* IMPORTANT: bms_add_members modifies/frees the first argument */
 	bms1 = bms_add_members(bms1, bms2);
 
-	if (bms2)
-		bms_free(bms2);
+	bms_free(bms2);
 
 	result = BITMAPSET_TO_TEXT(bms1);
 	bms_free(bms1);
@@ -181,8 +179,7 @@ test_bms_is_member(PG_FUNCTION_ARGS)
 	member = PG_GETARG_INT32(1);
 	result = bms_is_member(member, bms);
 
-	if (bms)
-		bms_free(bms);
+	bms_free(bms);
 
 	PG_RETURN_BOOL(result);
 }
@@ -198,8 +195,7 @@ test_bms_num_members(PG_FUNCTION_ARGS)
 
 	result = bms_num_members(bms);
 
-	if (bms)
-		bms_free(bms);
+	bms_free(bms);
 
 	PG_RETURN_INT32(result);
 }
@@ -239,10 +235,8 @@ test_bms_copy(PG_FUNCTION_ARGS)
 	copy_bms = bms_copy(bms);
 	result = BITMAPSET_TO_TEXT(copy_bms);
 
-	if (bms)
-		bms_free(bms);
-	if (copy_bms)
-		bms_free(copy_bms);
+	bms_free(bms);
+	bms_free(copy_bms);
 
 	PG_RETURN_TEXT_P(result);
 }
@@ -262,10 +256,8 @@ test_bms_equal(PG_FUNCTION_ARGS)
 
 	result = bms_equal(bms1, bms2);
 
-	if (bms1)
-		bms_free(bms1);
-	if (bms2)
-		bms_free(bms2);
+	bms_free(bms1);
+	bms_free(bms2);
 
 	PG_RETURN_BOOL(result);
 }
@@ -286,10 +278,8 @@ test_bms_union(PG_FUNCTION_ARGS)
 
 	result_bms = bms_union(bms1, bms2);
 
-	if (bms1)
-		bms_free(bms1);
-	if (bms2)
-		bms_free(bms2);
+	bms_free(bms1);
+	bms_free(bms2);
 
 	if (result_bms == NULL)
 		PG_RETURN_NULL();
@@ -312,8 +302,7 @@ test_bms_membership(PG_FUNCTION_ARGS)
 	bms = TEXT_TO_BITMAPSET(PG_GETARG_TEXT_PP(0));
 	result = bms_membership(bms);
 
-	if (bms)
-		bms_free(bms);
+	bms_free(bms);
 
 	PG_RETURN_INT32((int32) result);
 }
@@ -332,8 +321,7 @@ test_bms_next_member(PG_FUNCTION_ARGS)
 	prevmember = PG_GETARG_INT32(1);
 	result = bms_next_member(bms, prevmember);
 
-	if (bms)
-		bms_free(bms);
+	bms_free(bms);
 
 	PG_RETURN_INT32(result);
 }
@@ -354,10 +342,8 @@ test_bms_intersect(PG_FUNCTION_ARGS)
 
 	result_bms = bms_intersect(bms1, bms2);
 
-	if (bms1)
-		bms_free(bms1);
-	if (bms2)
-		bms_free(bms2);
+	bms_free(bms1);
+	bms_free(bms2);
 
 	if (result_bms == NULL)
 		PG_RETURN_NULL();
@@ -384,10 +370,8 @@ test_bms_difference(PG_FUNCTION_ARGS)
 
 	result_bms = bms_difference(bms1, bms2);
 
-	if (bms1)
-		bms_free(bms1);
-	if (bms2)
-		bms_free(bms2);
+	bms_free(bms1);
+	bms_free(bms2);
 
 	if (result_bms == NULL)
 		PG_RETURN_NULL();
@@ -413,10 +397,8 @@ test_bms_compare(PG_FUNCTION_ARGS)
 
 	result = bms_compare(bms1, bms2);
 
-	if (bms1)
-		bms_free(bms1);
-	if (bms2)
-		bms_free(bms2);
+	bms_free(bms1);
+	bms_free(bms2);
 
 	PG_RETURN_INT32(result);
 }
@@ -432,8 +414,7 @@ test_bms_is_empty(PG_FUNCTION_ARGS)
 
 	result = bms_is_empty(bms);
 
-	if (bms)
-		bms_free(bms);
+	bms_free(bms);
 
 	PG_RETURN_BOOL(result);
 }
@@ -453,10 +434,8 @@ test_bms_is_subset(PG_FUNCTION_ARGS)
 
 	result = bms_is_subset(bms1, bms2);
 
-	if (bms1)
-		bms_free(bms1);
-	if (bms2)
-		bms_free(bms2);
+	bms_free(bms1);
+	bms_free(bms2);
 
 	PG_RETURN_BOOL(result);
 }
@@ -476,10 +455,8 @@ test_bms_subset_compare(PG_FUNCTION_ARGS)
 
 	result = bms_subset_compare(bms1, bms2);
 
-	if (bms1)
-		bms_free(bms1);
-	if (bms2)
-		bms_free(bms2);
+	bms_free(bms1);
+	bms_free(bms2);
 
 	PG_RETURN_INT32((int32) result);
 }
@@ -495,8 +472,7 @@ test_bms_singleton_member(PG_FUNCTION_ARGS)
 
 	result = bms_singleton_member(bms);
 
-	if (bms)
-		bms_free(bms);
+	bms_free(bms);
 
 	PG_RETURN_INT32(result);
 }
@@ -566,10 +542,8 @@ test_bms_overlap(PG_FUNCTION_ARGS)
 
 	result = bms_overlap(bms1, bms2);
 
-	if (bms1)
-		bms_free(bms1);
-	if (bms2)
-		bms_free(bms2);
+	bms_free(bms1);
+	bms_free(bms2);
 
 	PG_RETURN_BOOL(result);
 }
@@ -593,8 +567,7 @@ test_bms_overlap_list(PG_FUNCTION_ARGS)
 
 	if (PG_ARGISNULL(1))
 	{
-		if (bms)
-			bms_free(bms);
+		bms_free(bms);
 		PG_RETURN_BOOL(false);
 	}
 
@@ -616,8 +589,7 @@ test_bms_overlap_list(PG_FUNCTION_ARGS)
 
 	result = bms_overlap_list(bms, int_list);
 
-	if (bms)
-		bms_free(bms);
+	bms_free(bms);
 
 	list_free(int_list);
 
@@ -642,10 +614,8 @@ test_bms_nonempty_difference(PG_FUNCTION_ARGS)
 
 	result = bms_nonempty_difference(bms1, bms2);
 
-	if (bms1)
-		bms_free(bms1);
-	if (bms2)
-		bms_free(bms2);
+	bms_free(bms1);
+	bms_free(bms2);
 
 	PG_RETURN_BOOL(result);
 }
@@ -695,16 +665,14 @@ test_bms_add_range(PG_FUNCTION_ARGS)
 	/* Check for invalid range */
 	if (upper < lower)
 	{
-		if (bms)
-			bms_free(bms);
+		bms_free(bms);
 		PG_RETURN_NULL();
 	}
 
 	bms = bms_add_range(bms, lower, upper);
 
 	result = BITMAPSET_TO_TEXT(bms);
-	if (bms)
-		bms_free(bms);
+	bms_free(bms);
 
 	PG_RETURN_TEXT_P(result);
 }
@@ -724,16 +692,14 @@ test_bms_int_members(PG_FUNCTION_ARGS)
 
 	bms1 = bms_int_members(bms1, bms2);
 
-	if (bms2)
-		bms_free(bms2);
+	bms_free(bms2);
 
 	if (bms1 == NULL)
 		PG_RETURN_NULL();
 
 	result = BITMAPSET_TO_TEXT(bms1);
 
-	if (bms1)
-		bms_free(bms1);
+	bms_free(bms1);
 
 	PG_RETURN_TEXT_P(result);
 }
@@ -757,8 +723,7 @@ test_bms_del_members(PG_FUNCTION_ARGS)
 
 	/* bms1 is now invalid, do not free it */
 
-	if (bms2)
-		bms_free(bms2);
+	bms_free(bms2);
 
 	if (result_bms == NULL)
 		PG_RETURN_NULL();
@@ -788,8 +753,7 @@ test_bms_replace_members(PG_FUNCTION_ARGS)
 
 	/* bms1 is now invalid, do not free it */
 
-	if (bms2)
-		bms_free(bms2);
+	bms_free(bms2);
 
 	if (result_bms == NULL)
 		PG_RETURN_NULL();
@@ -839,8 +803,7 @@ test_bms_hash_value(PG_FUNCTION_ARGS)
 
 	hash_result = bms_hash_value(bms);
 
-	if (bms)
-		bms_free(bms);
+	bms_free(bms);
 
 	PG_RETURN_INT32(hash_result);
 }
@@ -889,11 +852,8 @@ test_bitmap_match(PG_FUNCTION_ARGS)
 	/* Call bitmap_match with addresses of the Bitmapset pointers */
 	match_result = bitmap_match(&bms_ptr1, &bms_ptr2, sizeof(Bitmapset *));
 
-	/* Clean up */
-	if (bms1)
-		bms_free(bms1);
-	if (bms2)
-		bms_free(bms2);
+	bms_free(bms1);
+	bms_free(bms2);
 
 	PG_RETURN_INT32(match_result);
 }
@@ -1031,8 +991,7 @@ test_random_operations(PG_FUNCTION_ARGS)
 		total_ops++;
 	}
 
-	if (bms)
-		bms_free(bms);
+	bms_free(bms);
 
 	PG_RETURN_INT32(total_ops);
 }
-- 
2.49.0