it looks that there are many places in libraries (src/lib), even
in libc, where memory leak will happen on realloc failure.
with this call:
void *new, *orig;
size_t newsize;
new = realloc(orig, newsize);
- when the reallocation succeeds, orig becomes invalid.
- when the reallocation fails, new becomes NULL and orig will be
**retained**. realloc does not free it.
so, the following call leaks memory whenever realloc fails:
p = realloc(p, newsize);
you can no longer reference original region, while it was not freed.
i think we should try go through every code in tree.
openbsd realloc(3) manpage says it loudly, which is i think great.
itojun