1
0
mirror of https://github.com/postgres/postgres.git synced 2025-05-05 09:19:17 +03:00

Add new function dsa_allocate0.

This does the same thing as dsa_allocate, except that the memory
is guaranteed to be zero-filled on return.

Dilip Kumar, adjusted by me.
This commit is contained in:
Robert Haas 2017-02-16 12:45:53 -05:00
parent 3b7673388d
commit 9acb85597f
2 changed files with 17 additions and 0 deletions

View File

@ -755,6 +755,22 @@ dsa_allocate(dsa_area *area, Size size)
return alloc_object(area, size_class); return alloc_object(area, size_class);
} }
/*
* As dsa_allocate, but zeroes the allocated memory.
*/
dsa_pointer
dsa_allocate0(dsa_area *area, Size size)
{
dsa_pointer dp;
char *object;
dp = dsa_allocate(area, size);
object = dsa_get_address(area, dp);
memset(object, 0, size);
return dp;
}
/* /*
* Free memory obtained with dsa_allocate. * Free memory obtained with dsa_allocate.
*/ */

View File

@ -106,6 +106,7 @@ extern void dsa_set_size_limit(dsa_area *area, Size limit);
extern Size dsa_minimum_size(void); extern Size dsa_minimum_size(void);
extern dsa_handle dsa_get_handle(dsa_area *area); extern dsa_handle dsa_get_handle(dsa_area *area);
extern dsa_pointer dsa_allocate(dsa_area *area, Size size); extern dsa_pointer dsa_allocate(dsa_area *area, Size size);
extern dsa_pointer dsa_allocate0(dsa_area *area, Size size);
extern void dsa_free(dsa_area *area, dsa_pointer dp); extern void dsa_free(dsa_area *area, dsa_pointer dp);
extern void *dsa_get_address(dsa_area *area, dsa_pointer dp); extern void *dsa_get_address(dsa_area *area, dsa_pointer dp);
extern void dsa_trim(dsa_area *area); extern void dsa_trim(dsa_area *area);