> +void slog_set_command_name(const char *command_name) > +{ > + /* > + * Capture the command name even if logging is not enabled > + * because we don't know if the config has been loaded yet by > + * the cmd_<command>() and/or it may be too early to force a > + * lazy load. > + */ > + if (my__command_name) > + free(my__command_name); > + my__command_name = xstrdup(command_name); > +} > + > +void slog_set_sub_command_name(const char *sub_command_name) > +{ > + /* > + * Capture the sub-command name even if logging is not enabled > + * because we don't know if the config has been loaded yet by > + * the cmd_<command>() and/or it may be too early to force a > + * lazy load. > + */ > + if (my__sub_command_name) > + free(my__sub_command_name); Please drop the condition in these two functions; free() handles NULL arguments just fine. (Sidenote: what's the deal with these 'my__' prefixes anyway?)