Change Pointer to void *
authorPeter Eisentraut <[email protected]>
Wed, 3 Dec 2025 09:22:17 +0000 (10:22 +0100)
committerPeter Eisentraut <[email protected]>
Wed, 3 Dec 2025 09:22:17 +0000 (10:22 +0100)
The comment for the Pointer type said 'XXX Pointer arithmetic is done
with this, so it can't be void * under "true" ANSI compilers.'.  This
has been fixed in the previous commit 756a4368932.  This now changes
the definition of the type from char * to void *, as envisaged by that
comment.

Extension code that relies on using Pointer for pointer arithmetic
will need to make changes similar to commit 756a4368932, but those
changes would be backward compatible.

Reviewed-by: Chao Li <[email protected]>
Reviewed-by: Bertrand Drouvot <[email protected]>
Discussion: https://www.postgresql.org/message-id/4154950a-47ae-4223-bd01-1235cc50e933%40eisentraut.org

src/include/c.h

index a40f0cf4642c65a83c4f035edad3fb314372c3c0..ccd2b654d45971898aa634a62792426532644160 100644 (file)
@@ -527,11 +527,9 @@ typedef void (*pg_funcptr_t) (void);
 /*
  * Pointer
  *     Variable holding address of any memory resident object.
- *
- *     XXX Pointer arithmetic is done with this, so it can't be void *
- *     under "true" ANSI compilers.
+ *     (obsolescent; use void * or char *)
  */
-typedef char *Pointer;
+typedef void *Pointer;
 
 /* Historical names for types in <stdint.h>. */
 typedef int8_t int8;