Hi hackers,

I was working on something similar to [1] (which led to 7f798aca1d5) and I think
that 7f798aca1d5 missed removing some useless casts to (void *).

Meaning, the ones in the attached patch in:

- inval.c
- bump.c
- injection_point.c
- copyfromparse.c
- extension.c
- wparser.c

I did not find any reasons in the thread as to why those ones were not removed.

The attached also remove casts that have been added since 7f798aca1d5, the ones
in pg_publication.c, lock.c and tuplesortvariants.c.

The patch has been generated with the help of the .cocci script [2] (though I 
manually reviewed and removed some matches that, I think, were not appropriate).

[1]: 
https://www.postgresql.org/message-id/flat/461ea37c-8b58-43b4-9736-52884e862820%40eisentraut.org
[2]: 
https://github.com/bdrouvot/coccinelle_on_pg/blob/main/misc/remove_useless_casts_to_void_star.cocci

Regards,

-- 
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com
>From 4ceb173dae4f1de9ef859d5d0dacb868427a53a0 Mon Sep 17 00:00:00 2001
From: Bertrand Drouvot <[email protected]>
Date: Thu, 20 Nov 2025 11:19:31 +0000
Subject: [PATCH v1] Remove useless casts to (void *)

Their presence causes (small) risks of hiding actual type mismatches or silently
discarding qualifiers. Some have been missed in 7f798aca1d5 and some are
new ones.
---
 src/backend/catalog/pg_publication.c       | 2 +-
 src/backend/commands/copyfromparse.c       | 2 +-
 src/backend/commands/extension.c           | 2 +-
 src/backend/storage/lmgr/lock.c            | 2 +-
 src/backend/tsearch/wparser.c              | 2 +-
 src/backend/utils/cache/inval.c            | 2 +-
 src/backend/utils/misc/injection_point.c   | 2 +-
 src/backend/utils/mmgr/bump.c              | 2 +-
 src/backend/utils/sort/tuplesortvariants.c | 2 +-
 9 files changed, 9 insertions(+), 9 deletions(-)
  12.6% src/backend/catalog/
  29.2% src/backend/commands/
  12.3% src/backend/storage/lmgr/
  10.0% src/backend/tsearch/
   7.3% src/backend/utils/cache/
  10.6% src/backend/utils/misc/
   9.0% src/backend/utils/mmgr/
   8.7% src/backend/utils/sort/

diff --git a/src/backend/catalog/pg_publication.c b/src/backend/catalog/pg_publication.c
index ac2f4ee3561..0994220c53d 100644
--- a/src/backend/catalog/pg_publication.c
+++ b/src/backend/catalog/pg_publication.c
@@ -1369,7 +1369,7 @@ pg_get_publication_sequences(PG_FUNCTION_ARGS)
 		if (publication->allsequences)
 			sequences = GetAllPublicationRelations(RELKIND_SEQUENCE, false);
 
-		funcctx->user_fctx = (void *) sequences;
+		funcctx->user_fctx = sequences;
 
 		MemoryContextSwitchTo(oldcontext);
 	}
diff --git a/src/backend/commands/copyfromparse.c b/src/backend/commands/copyfromparse.c
index b1ae97b833d..a09e7fbace3 100644
--- a/src/backend/commands/copyfromparse.c
+++ b/src/backend/commands/copyfromparse.c
@@ -335,7 +335,7 @@ CopyGetData(CopyFromState cstate, void *databuf, int minread, int maxread)
 				if (avail > maxread)
 					avail = maxread;
 				pq_copymsgbytes(cstate->fe_msgbuf, databuf, avail);
-				databuf = (void *) ((char *) databuf + avail);
+				databuf = (char *) databuf + avail;
 				maxread -= avail;
 				bytesread += avail;
 			}
diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
index 93ef1ad106f..ebc204c4462 100644
--- a/src/backend/commands/extension.c
+++ b/src/backend/commands/extension.c
@@ -931,7 +931,7 @@ execute_sql_string(const char *sql, const char *filename)
 	callback_arg.stmt_len = -1;
 
 	scripterrcontext.callback = script_error_callback;
-	scripterrcontext.arg = (void *) &callback_arg;
+	scripterrcontext.arg = &callback_arg;
 	scripterrcontext.previous = error_context_stack;
 	error_context_stack = &scripterrcontext;
 
diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c
index 4cc7f645c31..9cb78ead105 100644
--- a/src/backend/storage/lmgr/lock.c
+++ b/src/backend/storage/lmgr/lock.c
@@ -1943,7 +1943,7 @@ WaitOnLock(LOCALLOCK *locallock, ResourceOwner owner)
 
 	/* Setup error traceback support for ereport() */
 	waiterrcontext.callback = waitonlock_error_callback;
-	waiterrcontext.arg = (void *) locallock;
+	waiterrcontext.arg = locallock;
 	waiterrcontext.previous = error_context_stack;
 	error_context_stack = &waiterrcontext;
 
diff --git a/src/backend/tsearch/wparser.c b/src/backend/tsearch/wparser.c
index a8ddb610991..55171aa8da1 100644
--- a/src/backend/tsearch/wparser.c
+++ b/src/backend/tsearch/wparser.c
@@ -204,7 +204,7 @@ prs_setup_firstcall(FuncCallContext *funcctx, FunctionCallInfo fcinfo,
 	st->len = st->cur;
 	st->cur = 0;
 
-	funcctx->user_fctx = (void *) st;
+	funcctx->user_fctx = st;
 	if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
 		elog(ERROR, "return type must be a row type");
 	funcctx->tuple_desc = tupdesc;
diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c
index 02505c88b8e..06f736cab45 100644
--- a/src/backend/utils/cache/inval.c
+++ b/src/backend/utils/cache/inval.c
@@ -1480,7 +1480,7 @@ CacheInvalidateHeapTupleCommon(Relation relation,
 	else
 		PrepareToInvalidateCacheTuple(relation, tuple, newtuple,
 									  RegisterCatcacheInvalidation,
-									  (void *) info);
+									  info);
 
 	/*
 	 * Now, is this tuple one of the primary definers of a relcache entry? See
diff --git a/src/backend/utils/misc/injection_point.c b/src/backend/utils/misc/injection_point.c
index 64e6274652c..d02618c7ffe 100644
--- a/src/backend/utils/misc/injection_point.c
+++ b/src/backend/utils/misc/injection_point.c
@@ -186,7 +186,7 @@ injection_point_cache_load(InjectionPointEntry *entry, int slot_idx, uint64 gene
 		elog(ERROR, "could not find library \"%s\" for injection point \"%s\"",
 			 path, entry->name);
 
-	injection_callback_local = (void *)
+	injection_callback_local =
 		load_external_function(path, entry->function, false, NULL);
 
 	if (injection_callback_local == NULL)
diff --git a/src/backend/utils/mmgr/bump.c b/src/backend/utils/mmgr/bump.c
index a263861fe43..e60ec94e139 100644
--- a/src/backend/utils/mmgr/bump.c
+++ b/src/backend/utils/mmgr/bump.c
@@ -407,7 +407,7 @@ BumpAllocChunkFromBlock(MemoryContext context, BumpBlock *block, Size size,
 #ifdef MEMORY_CONTEXT_CHECKING
 	chunk = (MemoryChunk *) block->freeptr;
 #else
-	ptr = (void *) block->freeptr;
+	ptr = block->freeptr;
 #endif
 
 	/* point the freeptr beyond this chunk */
diff --git a/src/backend/utils/sort/tuplesortvariants.c b/src/backend/utils/sort/tuplesortvariants.c
index 41ac4afbf49..9751a7fc495 100644
--- a/src/backend/utils/sort/tuplesortvariants.c
+++ b/src/backend/utils/sort/tuplesortvariants.c
@@ -1954,7 +1954,7 @@ readtup_index_gin(Tuplesortstate *state, SortTuple *stup,
 	LogicalTapeReadExact(tape, tuple, tuplen);
 	if (base->sortopt & TUPLESORT_RANDOMACCESS) /* need trailing length word? */
 		LogicalTapeReadExact(tape, &tuplen, sizeof(tuplen));
-	stup->tuple = (void *) tuple;
+	stup->tuple = tuple;
 
 	/* no abbreviations (FIXME maybe use attrnum for this?) */
 	stup->datum1 = (Datum) 0;
-- 
2.34.1

Reply via email to