On Thu, 27 Aug 2015, Xin LI wrote:

Log:
 die() would never return, mark it as so.

Why?  (Except to add a style bug.)

Modified: head/usr.sbin/syslogd/syslogd.c
==============================================================================
--- head/usr.sbin/syslogd/syslogd.c     Thu Aug 27 17:16:18 2015        
(r287216)
+++ head/usr.sbin/syslogd/syslogd.c     Thu Aug 27 18:11:00 2015        
(r287217)
@@ -324,7 +324,7 @@ static const char *cvthname(struct socka
static void     deadq_enter(pid_t, const char *);
static int      deadq_remove(pid_t);
static int      decode(const char *, const CODE *);
-static void    die(int);
+static void    die(int) __dead2;

Since the function is static, it is very easy for the compiler to see
that it doesn't return.  Even gcc-4.2.1 does this by default, since
-O implies -funit-at-a-time for gcc-4.2.1.  For clang, there is no way
to prevent this (except possibly -O0) since, since -fno-unit-at-a-time
is broken in clang.

Several other functions in the same file are still missing this style
bug:

- usage().  The style bug is clearly documented for usage() by its
  absence in style(9) and in most files that have usage().  Howvever,
  about 30 declarations of usage() in /usr/src have the style bug.

- timedout().  This is a signal handler, so doesn't really need it.
  This is broken signal handler.  It carefully uses _exit() so as
  to not use stdio in a signal handler, but defeats this by also
  using errx().

Bruce
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to