comparison src/dmgrowbuf.c @ 1508:97b8096f16dc

Initialize the memory in growbuf.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 11 May 2018 22:22:23 +0300
parents a0166c4050be
children 15afe578f0ae
comparison
equal deleted inserted replaced
1507:7d012e5acf5c 1508:97b8096f16dc
28 buf->len = 0; 28 buf->len = 0;
29 buf->size = initial; 29 buf->size = initial;
30 buf->mingrow = mingrow; 30 buf->mingrow = mingrow;
31 buf->allocated = FALSE; 31 buf->allocated = FALSE;
32 32
33 if ((buf->data = dmMalloc(initial)) == NULL) 33 if ((buf->data = dmMalloc0(initial)) == NULL)
34 return DMERR_MALLOC; 34 return DMERR_MALLOC;
35 35
36 return DMERR_OK; 36 return DMERR_OK;
37 } 37 }
38 38
72 } 72 }
73 73
74 74
75 BOOL dmGrowBufGrow(DMGrowBuf *buf, const size_t amount) 75 BOOL dmGrowBufGrow(DMGrowBuf *buf, const size_t amount)
76 { 76 {
77 if (buf->data == NULL || buf->len + amount > buf->size) 77 size_t grow = (amount > buf->mingrow) ? amount : buf->mingrow;
78 if (buf->data == NULL || buf->len + grow > buf->size)
78 { 79 {
79 buf->size += amount + (buf->mingrow > 0 ? buf->mingrow : 1024); 80 size_t prev = buf->size;
81 buf->size += grow;
80 if ((buf->data = dmRealloc(buf->data, buf->size)) == NULL) 82 if ((buf->data = dmRealloc(buf->data, buf->size)) == NULL)
81 return FALSE; 83 return FALSE;
84
85 memset(buf->data + prev, 0, buf->size - prev);
82 } 86 }
83 87
84 return TRUE; 88 return TRUE;
85 } 89 }
86 90
87 91
88 BOOL dmGrowBufCheckGrow(DMGrowBuf *buf, const size_t nsize) 92 BOOL dmGrowBufCheckGrow(DMGrowBuf *buf, const size_t nsize)
89 { 93 {
90 if (buf->data == NULL || nsize > buf->size) 94 if (buf->data == NULL || nsize > buf->size)
91 { 95 {
92 buf->size = nsize + (buf->mingrow > 0 ? buf->mingrow : 1024); 96 size_t prev = buf->size;
97 buf->size = nsize + buf->mingrow;
93 if ((buf->data = dmRealloc(buf->data, buf->size)) == NULL) 98 if ((buf->data = dmRealloc(buf->data, buf->size)) == NULL)
94 return FALSE; 99 return FALSE;
100
101 memset(buf->data + prev, 0, buf->size - prev);
95 } 102 }
96 103
97 return TRUE; 104 return TRUE;
98 } 105 }
99 106