Mercurial > hg > dmlib
changeset 1508:97b8096f16dc
Initialize the memory in growbuf.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 11 May 2018 22:22:23 +0300 |
parents | 7d012e5acf5c |
children | 15afe578f0ae |
files | src/dmgrowbuf.c |
diffstat | 1 files changed, 11 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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;