From: Andre Noll Date: Sun, 1 Sep 2019 11:41:01 +0000 (+0200) Subject: Simplify and improve freep(). X-Git-Tag: v0.6.3~38 X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=commitdiff_plain;h=4ffb9e1500e70611e453e1dd4810577629a31cdd;hp=5459ae27b1efa26a1a47186c754a0e4cb486a278 Simplify and improve freep(). Make it a no-op if NULL is passed. Also the comment to \param was slightly incorrect and the code contained an unnecessary cast. --- diff --git a/string.c b/string.c index 65d22408..198e9f1d 100644 --- a/string.c +++ b/string.c @@ -199,17 +199,22 @@ __must_check __printf_1_2 __malloc char *make_message(const char *fmt, ...) } /** - * Free the content of a pointer and set it to \p NULL. + * Free the content of a pointer and set it to NULL. * - * This is equivalent to "free(*arg); *arg = NULL;". + * \param arg A pointer to the pointer whose content should be freed. * - * \param arg The pointer whose content should be freed. + * If arg is NULL, the function returns immediately. Otherwise it frees the + * memory pointed to by *arg and sets *arg to NULL. Hence callers have to pass + * the *address* of the pointer variable that points to the memory which should + * be freed. */ void freep(void *arg) { - void **ptr = (void **)arg; - free(*ptr); - *ptr = NULL; + if (arg) { + void **ptr = arg; + free(*ptr); + *ptr = NULL; + } } /**