]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Log: Reinitialize the static logging structures
authorOndrej Zajicek (work) <santiago@crfreenet.org>
Wed, 25 Nov 2020 14:04:34 +0000 (15:04 +0100)
committerOndrej Zajicek (work) <santiago@crfreenet.org>
Wed, 25 Nov 2020 14:04:34 +0000 (15:04 +0100)
The static logging structures are reused, we need to reinitialize them
otherwise add_tail() would fail in debug build. Reinitializing these
structures should be fine as the list they belong to is being
reinitialized on entry to the very same function.

Thanks to Andreas Rammhold and Mikael Magnusson for patches.

sysdep/unix/log.c

index e24322c601add273c1fd3d62e71f6fbf7807a663..44536cc94eb85d19ad18c2d3d7aa28c42aac6572 100644 (file)
@@ -341,7 +341,11 @@ 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 +353,24 @@ 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);
     }