|
|
@@ -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;
|