Re: Expand palloc/pg_malloc API
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Cc: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2022-09-14T04:35:57Z
Lists: pgsql-hackers
Peter Eisentraut <peter.eisentraut@enterprisedb.com> writes: > I have another little idea that fits well here: repalloc0 and > repalloc0_array. These zero out the space added by repalloc. This is a > common pattern in the backend code that is quite hairy to code by hand. > See attached patch. +1 in general --- you've put your finger on something I felt was missing, but couldn't quite identify. However, I'm a bit bothered by the proposed API: +extern pg_nodiscard void *repalloc0(void *pointer, Size size, Size oldsize); It kind of feels that the argument order should be pointer, oldsize, size. It feels even more strongly that people will get the ordering wrong, whichever we choose. Is there a way to make that more bulletproof? The only thought that comes to mind offhand is that the only plausible use-case is with size >= oldsize, so maybe an assertion or even a runtime check would help to catch getting it backwards. (I notice that your proposed coding will fail rather catastrophically if the caller gets it backwards. An assertion failure would be better.) regards, tom lane
Commits
-
Add repalloc0 and repalloc0_array
- b4b7ce8061d3 16.0 landed
-
Expand palloc/pg_malloc API for more type safety
- 2864f7755611 10.23 landed
- e962235fe1f6 11.18 landed
- 7dd9b469bc56 12.13 landed
- 172882292451 13.9 landed
- b7f37af7c195 14.6 landed
- 7fe55d5e12b6 15.0 landed
- 2016055a92f2 16.0 landed
-
Assorted examples of expanded type-safer palloc/pg_malloc API
- 5015e1e1b58f 16.0 landed