Обсуждение: pgsql: Remove unnecessary casts in free() and pfree()
Remove unnecessary casts in free() and pfree() Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://www.postgresql.org/message-id/flat/cf26e970-8e92-59f1-247a-aa265235075b%40enterprisedb.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/45987aae260a441886a010323bf3e143ce8e82d6 Modified Files -------------- contrib/sepgsql/label.c | 8 ++++---- src/backend/utils/fmgr/dfmgr.c | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-)
On Fri, Aug 26, 2022 at 02:02:33PM +0000, Peter Eisentraut wrote: > Remove unnecessary casts in free() and pfree() This seems to be breaking cfbot's "warnings" test. [07:49:48.983] label.c:665:10: error: passing argument 1 of ‘pfree’ discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] [07:49:48.983] 665 | pfree(temp); I imagine it would've been reported earlier, except that this commit was within 60min of the commit that broke perl. -- Justin
Justin Pryzby <pryzby@telsasoft.com> writes: > On Fri, Aug 26, 2022 at 02:02:33PM +0000, Peter Eisentraut wrote: >> Remove unnecessary casts in free() and pfree() > This seems to be breaking cfbot's "warnings" test. > [07:49:48.983] label.c:665:10: error: passing argument 1 of ‘pfree’ discards ‘const’ qualifier from pointer target type[-Werror=discarded-qualifiers] > [07:49:48.983] 665 | pfree(temp); Hmm, well, casting away const is certainly not within pfree's remit, so I'm glad we changed this. A quick-n-dirty fix is to cast away const at this call site, but I wonder whether this isn't a symptom of poor const choices. I'll take a look later today if no one beats me to it. regards, tom lane
I wrote: > Justin Pryzby <pryzby@telsasoft.com> writes: >> This seems to be breaking cfbot's "warnings" test. > Hmm, well, casting away const is certainly not within pfree's remit, > so I'm glad we changed this. Oh, I see: sepgsql's quote_object_name() is doing const char *temp; temp = quote_identifier(src1); appendStringInfoString(&result, temp); if (src1 != temp) pfree(temp); evidently because whoever wrote this felt a compulsion to override quote_identifier's judgment that possibly leaking the quoted identifier wasn't worth worrying about. I think we should just nuke this code altogether and write appendStringInfoString(&result, quote_identifier(src1)); regards, tom lane