summaryrefslogtreecommitdiff
path: root/src/microhttpd/memorypool.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/microhttpd/memorypool.c')
-rw-r--r--src/microhttpd/memorypool.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/microhttpd/memorypool.c b/src/microhttpd/memorypool.c
index 8d679854..037cbf57 100644
--- a/src/microhttpd/memorypool.c
+++ b/src/microhttpd/memorypool.c
@@ -241,7 +241,8 @@ MHD_pool_reallocate (struct MemoryPool *pool,
{
/* fits */
ret = &pool->memory[pool->pos];
- memmove (ret, old, old_size);
+ if (0 != old_size)
+ memmove (ret, old, old_size);
pool->pos += asize;
return ret;
}
@@ -273,17 +274,19 @@ MHD_pool_reset (struct MemoryPool *pool,
{
if (keep != pool->memory)
{
- memmove (pool->memory,
- keep,
- copy_bytes);
+ if (0 != copy_bytes)
+ memmove (pool->memory,
+ keep,
+ copy_bytes);
keep = pool->memory;
}
}
pool->end = pool->size;
/* technically not needed, but safer to zero out */
- memset (&pool->memory[copy_bytes],
- 0,
- pool->size - copy_bytes);
+ if (pool->size > copy_bytes)
+ memset (&pool->memory[copy_bytes],
+ 0,
+ pool->size - copy_bytes);
if (NULL != keep)
pool->pos = ROUND_TO_ALIGN (new_size);
return keep;