diff options
author | Christian Göttsche <cgzones@googlemail.com> | 2021-09-10 15:09:42 +0200 |
---|---|---|
committer | BenBE <BenBE@geshi.org> | 2021-09-11 00:04:00 +0200 |
commit | bf395e10c52094c44b1a6e0b7fedc35c35de0641 (patch) | |
tree | 6fc0e58e1a31c5c34f8e372b05e449fb2d170070 /XUtils.c | |
parent | 8f259bc5e1b9a6a95c16b971cf4733cf76725c96 (diff) |
Add xReallocArrayZero() helper
Add helper function to reallocate an dynamic allocated array including
zeroing the newly allocated memory.
Diffstat (limited to 'XUtils.c')
-rw-r--r-- | XUtils.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -78,6 +78,22 @@ void* xReallocArray(void* ptr, size_t nmemb, size_t size) { return xRealloc(ptr, nmemb * size); } +void* xReallocArrayZero(void* ptr, size_t prevmemb, size_t newmemb, size_t size) { + assert((ptr == NULL) == (prevmemb == 0)); + + if (prevmemb == newmemb) { + return ptr; + } + + void* ret = xReallocArray(ptr, newmemb, size); + + if (newmemb > prevmemb) { + memset((unsigned char*)ret + prevmemb * size, '\0', (newmemb - prevmemb) * size); + } + + return ret; +} + inline bool String_contains_i(const char* s1, const char* s2) { return strcasestr(s1, s2) != NULL; } |