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
-
Update ICU C++ API symbols
- 9560c1ec1c93 13.22 landed
- a4f891b96235 14.19 landed
- baacfb9e609c 15.14 landed
- aae9aad19d82 16.10 landed
- 21ae8fc5fd86 17.6 landed
- dd29262077e8 18.0 landed
- 90bfae9f93e7 19 (unreleased) landed
-
Hide ICU C++ APIs from pg_locale.h
- ed26c4e25a44 19 (unreleased) landed
-
Remove implicit cast from 'void *'
- 3e73d8735371 18.0 landed
- 9adb58a3ccb5 19 (unreleased) landed
-
Inline CRC computation for small fixed-length input on x86
- e2809e3a1015 18.0 cited