Re: implicit casts from void*

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: John Naylor <johncnaylorls@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-07-01T03:36:10Z
Lists: pgsql-hackers
John Naylor <johncnaylorls@gmail.com> writes:
> I received on off-list report that commit e2809e3a101 causes an error
> when building an extension written in C++, since $subject is in a
> header file. The fix is simply to add an explicit cast, so I plan to
> push the attached soon.

Hmpfh.  No objection to your patch, but I wonder why
"headerscheck --cplusplus" didn't find this?  Can we get it
to do so?

> Bikeshedding: We could additionally change the pg_crc*.c files to make
> them consistent, but I have not done that yet. It seems we prefer
> explicit casts anyway but don't enforce that.

Meh.  There are an awful lot of places where we assume such casts
are okay.  I'm willing to adopt a stricter definition in header
files, but it feels like requiring it in .c files is useless
make-work.  As a perhaps not quite exact parallel, we mostly
don't object to writing

	if (ptr)

as a shortcut for

	if (ptr != NULL)

though it's hard to see the former as anything but an implicit
cast to boolean.

			regards, tom lane



Commits

  1. Update ICU C++ API symbols

  2. Hide ICU C++ APIs from pg_locale.h

  3. Remove implicit cast from 'void *'

  4. Inline CRC computation for small fixed-length input on x86