mirror of
http://thekelleys.org.uk/git/dnsmasq.git
synced 2026-11-02 13:30:32 +00:00
Rewrite blockdata_retrieve() and expand_buf() to use realloc().
This commit is contained in:
2 files changed
+7
-15
No files matched your search
+6
-8
@@ -193,22 +193,20 @@ void *blockdata_retrieve(struct blockdata *block, size_t len, void *data)
|
|||||||
{
|
{
|
||||||
size_t blen;
|
size_t blen;
|
||||||
struct blockdata *b;
|
struct blockdata *b;
|
||||||
uint8_t *new, *d;
|
uint8_t *d;
|
||||||
|
|
||||||
static unsigned int buff_len = 0;
|
|
||||||
static unsigned char *buff = NULL;
|
|
||||||
|
|
||||||
if (!data)
|
if (!data)
|
||||||
{
|
{
|
||||||
|
static unsigned int buff_len = 0;
|
||||||
|
static unsigned char *buff = NULL;
|
||||||
|
uint8_t *new;
|
||||||
|
|
||||||
if (len > buff_len)
|
if (len > buff_len)
|
||||||
{
|
{
|
||||||
blen = len + 1024;
|
blen = len + 1024;
|
||||||
if (!(new = whine_malloc(blen)))
|
if (!(new = whine_realloc(buff, blen)))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (buff)
|
|
||||||
free(buff);
|
|
||||||
|
|
||||||
buff = new;
|
buff = new;
|
||||||
buff_len = blen;
|
buff_len = blen;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-7
@@ -680,18 +680,12 @@ int expand_buf(struct iovec *iov, size_t size)
|
|||||||
if (size <= (size_t)iov->iov_len)
|
if (size <= (size_t)iov->iov_len)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (!(new = whine_malloc(size)))
|
if (!(new = whine_realloc(iov->iov_base, size)))
|
||||||
{
|
{
|
||||||
errno = ENOMEM;
|
errno = ENOMEM;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iov->iov_base)
|
|
||||||
{
|
|
||||||
memcpy(new, iov->iov_base, iov->iov_len);
|
|
||||||
free(iov->iov_base);
|
|
||||||
}
|
|
||||||
|
|
||||||
iov->iov_base = new;
|
iov->iov_base = new;
|
||||||
iov->iov_len = size;
|
iov->iov_len = size;
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user