GNU bug report logs - #17667
[PATCH] df: Initialize a variable to squash a compiler warning

Previous Next

Package: coreutils;

Reported by: Ben Walton <bdwalton <at> gmail.com>

Date: Mon, 2 Jun 2014 15:35:02 UTC

Severity: normal

Tags: patch

Done: Pádraig Brady <P <at> draigBrady.com>

Bug is archived. No further changes may be made.

Full log


Message #10 received at 17667-done <at> debbugs.gnu.org (full text, mbox):

From: Pádraig Brady <P <at> draigBrady.com>
To: Ben Walton <bdwalton <at> gmail.com>
Cc: 17667-done <at> debbugs.gnu.org
Subject: Re: bug#17667: [PATCH] df: Initialize a variable to squash a compiler
 warning
Date: Mon, 02 Jun 2014 20:22:19 +0100
On 06/02/2014 09:09 AM, Ben Walton wrote:
> * src/df.c: get_dev - With strict error checking, gcc complained that
>             v may have been used prior to initialization. To avoid
>             this, initialize to NULL.
> 
> Signed-off-by: Ben Walton <bdwalton <at> gmail.com>
> ---
>  src/df.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/df.c b/src/df.c
> index 01ecca6..059c958 100644
> --- a/src/df.c
> +++ b/src/df.c
> @@ -924,7 +924,7 @@ get_dev (char const *disk, char const *mount_point, char const* file,
>        char buf[LONGEST_HUMAN_READABLE + 2];
>        char *cell;
>  
> -      struct field_values_t *v;
> +      struct field_values_t *v = NULL;
>        switch (columns[col]->field_type)
>          {
>          case BLOCK_FLD:
> @@ -934,7 +934,7 @@ get_dev (char const *disk, char const *mount_point, char const* file,
>            v = &inode_values;
>            break;
>          case OTHER_FLD:
> -          v = NULL;
> +          /* Rely on NULL initialization. */
>            break;
>          default:
>            assert (!"bad field_type");

This is because assert() is not declared __noreturn__ on Solaris 10.
That can be an important admonition for a compiler
so I'm wondering should be detect this and provide a __noreturn__ wrapper.

Anyway what I don't want to do is change the current logic
to avoid such bogus warnings. What we could do here
is to tweak the assert path only to avoid the warning as follows.
OK to push the following instead in your name?

thanks,
Pádraig.

diff --git a/src/df.c b/src/df.c
index 82b0c5f..c08ad97 100644
--- a/src/df.c
+++ b/src/df.c
@@ -953,6 +953,7 @@ get_dev (char const *disk, char const *mount_point, char con
           v = NULL;
           break;
         default:
+          v = NULL; /* avoid warnings where assert() is not __noreturn__.  */
           assert (!"bad field_type");
         }






This bug report was last modified 11 years and 77 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.