# HG changeset patch # User Matti Hamalainen # Date 1526066543 -10800 # Node ID 97b8096f16dc686bf06a54d6aa502d96e61b8f09 # Parent 7d012e5acf5c55fd06e40509ed21e57323013d7b Initialize the memory in growbuf. diff -r 7d012e5acf5c -r 97b8096f16dc src/dmgrowbuf.c --- a/src/dmgrowbuf.c Fri May 11 20:28:48 2018 +0300 +++ b/src/dmgrowbuf.c Fri May 11 22:22:23 2018 +0300 @@ -30,7 +30,7 @@ buf->mingrow = mingrow; buf->allocated = FALSE; - if ((buf->data = dmMalloc(initial)) == NULL) + if ((buf->data = dmMalloc0(initial)) == NULL) return DMERR_MALLOC; return DMERR_OK; @@ -74,11 +74,15 @@ BOOL dmGrowBufGrow(DMGrowBuf *buf, const size_t amount) { - if (buf->data == NULL || buf->len + amount > buf->size) + size_t grow = (amount > buf->mingrow) ? amount : buf->mingrow; + if (buf->data == NULL || buf->len + grow > buf->size) { - buf->size += amount + (buf->mingrow > 0 ? buf->mingrow : 1024); + size_t prev = buf->size; + buf->size += grow; if ((buf->data = dmRealloc(buf->data, buf->size)) == NULL) return FALSE; + + memset(buf->data + prev, 0, buf->size - prev); } return TRUE; @@ -89,9 +93,12 @@ { if (buf->data == NULL || nsize > buf->size) { - buf->size = nsize + (buf->mingrow > 0 ? buf->mingrow : 1024); + size_t prev = buf->size; + buf->size = nsize + buf->mingrow; if ((buf->data = dmRealloc(buf->data, buf->size)) == NULL) return FALSE; + + memset(buf->data + prev, 0, buf->size - prev); } return TRUE;