This is required as they otherwise point to already (invalid) existing lists and add_tail will fail (during a debug build). Re-initializing these should be fine as the list they belong to is being re-initialized on entry to the very same function. This became mandatory as of baac7009063d the next and prev pointers of nodes in a list are checked against NULL in debug builds. --- sysdep/unix/log.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/sysdep/unix/log.c b/sysdep/unix/log.c index e24322c6..14a0e875 100644 --- a/sysdep/unix/log.c +++ b/sysdep/unix/log.c @@ -341,7 +341,8 @@ default_log_list(int initial, const char **syslog_name) #ifdef HAVE_SYSLOG_H if (!dbgf) { - static struct log_config lc_syslog = { .mask = ~0 }; + static struct log_config lc_syslog; + lc_syslog = (struct log_config){ .mask = ~0 }; add_tail(&log_list, &lc_syslog.n); *syslog_name = bird_name; } @@ -349,15 +350,22 @@ default_log_list(int initial, const char **syslog_name) if (dbgf && (dbgf != stderr)) { - static struct log_config lc_debug = { .mask = ~0 }; - lc_debug.fh = dbgf; + static struct log_config lc_debug; + lc_debug = (struct log_config){ + .mask = ~0, + .fh = dbgf + }; add_tail(&log_list, &lc_debug.n); } if (initial || (dbgf == stderr)) { - static struct log_config lc_stderr = { .mask = ~0, .terminal_flag = 1}; - lc_stderr.fh = stderr; + static struct log_config lc_stderr; + lc_stderr = (struct log_config){ + .mask = ~0, + .terminal_flag = 1, + .fh = stderr + }; add_tail(&log_list, &lc_stderr.n); } -- 2.29.2