mirror of
https://github.com/postgres/postgres.git
synced 2025-08-19 23:22:23 +03:00
Assorted examples of expanded type-safer palloc/pg_malloc API
This adds some uses of the new palloc/pg_malloc variants here and there as a demonstration and test. This is kept separate from the actual API patch, since the latter might be backpatched at some point. Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://www.postgresql.org/message-id/flat/bb755632-2a43-d523-36f8-a1e7a389a907@enterprisedb.com
This commit is contained in:
@@ -505,7 +505,7 @@ ginHeapTupleFastCollect(GinState *ginstate,
|
||||
* resizing (since palloc likes powers of 2).
|
||||
*/
|
||||
collector->lentuples = pg_nextpower2_32(Max(16, nentries));
|
||||
collector->tuples = (IndexTuple *) palloc(sizeof(IndexTuple) * collector->lentuples);
|
||||
collector->tuples = palloc_array(IndexTuple, collector->lentuples);
|
||||
}
|
||||
else if (collector->lentuples < collector->ntuples + nentries)
|
||||
{
|
||||
@@ -515,8 +515,8 @@ ginHeapTupleFastCollect(GinState *ginstate,
|
||||
* MaxAllocSize/sizeof(IndexTuple), causing an error in repalloc.
|
||||
*/
|
||||
collector->lentuples = pg_nextpower2_32(collector->ntuples + nentries);
|
||||
collector->tuples = (IndexTuple *) repalloc(collector->tuples,
|
||||
sizeof(IndexTuple) * collector->lentuples);
|
||||
collector->tuples = repalloc_array(collector->tuples,
|
||||
IndexTuple, collector->lentuples);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -665,9 +665,8 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
|
||||
static void
|
||||
initKeyArray(KeyArray *keys, int32 maxvalues)
|
||||
{
|
||||
keys->keys = (Datum *) palloc(sizeof(Datum) * maxvalues);
|
||||
keys->categories = (GinNullCategory *)
|
||||
palloc(sizeof(GinNullCategory) * maxvalues);
|
||||
keys->keys = palloc_array(Datum, maxvalues);
|
||||
keys->categories = palloc_array(GinNullCategory, maxvalues);
|
||||
keys->nvalues = 0;
|
||||
keys->maxvalues = maxvalues;
|
||||
}
|
||||
@@ -679,10 +678,8 @@ addDatum(KeyArray *keys, Datum datum, GinNullCategory category)
|
||||
if (keys->nvalues >= keys->maxvalues)
|
||||
{
|
||||
keys->maxvalues *= 2;
|
||||
keys->keys = (Datum *)
|
||||
repalloc(keys->keys, sizeof(Datum) * keys->maxvalues);
|
||||
keys->categories = (GinNullCategory *)
|
||||
repalloc(keys->categories, sizeof(GinNullCategory) * keys->maxvalues);
|
||||
keys->keys = repalloc_array(keys->keys, Datum, keys->maxvalues);
|
||||
keys->categories = repalloc_array(keys->categories, GinNullCategory, keys->maxvalues);
|
||||
}
|
||||
|
||||
keys->keys[keys->nvalues] = datum;
|
||||
|
Reference in New Issue
Block a user