getline(3): Fix segfault caused by NULL pointer
This fixes a segfault seen with pkg's audit function, and effectively syncs
getdelim with FreeBSD.
Taken-from: FreeBSD SVN 197752 (04 OCT 2009)
- Tolerate applications that pass a NULL pointer for the buffer and
claim that the capacity of the buffer is nonzero.
- If an application passes in a non-NULL buffer pointer and claims the
buffer has zero capacity, we should free (well, realloc) it anyway.
It could have been obtained from malloc(0), so failing to free it
would be a small memory leak.