From 3eb8ca2284ad42a80c3fd6edae33c1dbe20b94e5 Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Tue, 12 May 2020 21:38:38 -0700 Subject: libpad: pad_free() accept and return NULL Minor ergonimics change, originally I liked the idea of policing programming errors like attempting to free a NULL pad. But in practice it's just more convenient to be free-like ignoring NULL inputs, and while at it return a NULL pointer in case a reused pointer needs to be NULL'd on free. --- src/pad.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src/pad.c') diff --git a/src/pad.c b/src/pad.c index e7a1ad4..48186d3 100644 --- a/src/pad.c +++ b/src/pad.c @@ -196,18 +196,20 @@ void pad_reset(pad_t *pad) /* Free a pad and it's associated allocations. */ -void pad_free(pad_t *pad) +pad_t * pad_free(pad_t *pad) { - chunk_t *chunk, *_chunk; + if (pad) { + chunk_t *chunk, *_chunk; - assert(pad); + pad_reset(pad); - pad_reset(pad); + list_for_each_entry_safe(chunk, _chunk, &pad->free_chunks, chunks) + free(chunk); - list_for_each_entry_safe(chunk, _chunk, &pad->free_chunks, chunks) - free(chunk); + free(pad); + } - free(pad); + return NULL; } -- cgit v1.2.3