diff --git a/src/backend/utils/mmgr/dsa.c b/src/backend/utils/mmgr/dsa.c index 7dc43f1..f0b2a27 100644 --- a/src/backend/utils/mmgr/dsa.c +++ b/src/backend/utils/mmgr/dsa.c @@ -756,6 +756,22 @@ dsa_allocate(dsa_area *area, Size size) } /* + * As above, but clears 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. */ void diff --git a/src/include/utils/dsa.h b/src/include/utils/dsa.h index bb634e7..03d6a56 100644 --- a/src/include/utils/dsa.h +++ b/src/include/utils/dsa.h @@ -110,5 +110,6 @@ extern void dsa_free(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_dump(dsa_area *area); +extern dsa_pointer dsa_allocate0(dsa_area *area, Size size); #endif /* DSA_H */