diff --git a/include/pcp/mem.h b/include/pcp/mem.h index fc840ec..ea049b2 100644 --- a/include/pcp/mem.h +++ b/include/pcp/mem.h @@ -41,4 +41,7 @@ void *urmalloc(size_t s); /* resize a a pointer and fill the added remainder with zeroes */ void *ucrealloc(void *d, size_t oldlen, size_t newlen); +/* clear and free */ +void ucfree(void *d, size_t len); + #endif /* _HAVE_PCP_MEM */ diff --git a/libpcp/mem.c b/libpcp/mem.c index ce70be9..a74e6b8 100644 --- a/libpcp/mem.c +++ b/libpcp/mem.c @@ -65,3 +65,10 @@ void *ucrealloc(void *d, size_t oldlen, size_t newlen) { return value; } + +void ucfree(void *d, size_t len) { + if(d != NULL) { + memset(d, 0, len); + free(d); + } +}