The behavior of realloc for size == 0 is implementation defined.
It can return a non NULL pointer which must not be dereferenced but nether
the less must be freed. When calling the wren reallocation function with
size == 0 the memory pointed to ptr must be freed and NULL returned.