chiark / gitweb /
util: add greedy_realloc0()
[elogind.git] / src / shared / util.c
index 305a6c2fb654534040c75da8cb8837549c4e5110..b4ed2c407c4ad6d544adf5899760991f9ae05191 100644 (file)
@@ -5806,6 +5806,20 @@ void* greedy_realloc(void **p, size_t *allocated, size_t need) {
         return q;
 }
 
+void* greedy_realloc0(void **p, size_t *allocated, size_t need) {
+        size_t prev = *allocated;
+        uint8_t *q;
+
+        q = greedy_realloc(p, allocated, need);
+        if (!q)
+                return NULL;
+
+        if (*allocated > prev)
+                memset(&q[prev], 0, *allocated - prev);
+
+        return q;
+}
+
 bool id128_is_valid(const char *s) {
         size_t i, l;