X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=string.c;h=198e9f1d286ee2228638a2a7994fe9e65f41ccac;hp=65d2240891afc81f40e6b964d5c0f6b7b25a0ddc;hb=4ffb9e1500e70611e453e1dd4810577629a31cdd;hpb=5459ae27b1efa26a1a47186c754a0e4cb486a278 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; + } } /**