Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Apr 2023 16:26:57 GMT
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 1a3ccb8f1552 - main - libsa: make single bit bitfields unsigned to avoid clang 16 warning
Message-ID:  <202304171626.33HGQvXv036586@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by dim:

URL: https://cgit.FreeBSD.org/src/commit/?id=1a3ccb8f1552977e1b264e3b89d1fba8e717dad8

commit 1a3ccb8f1552977e1b264e3b89d1fba8e717dad8
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2023-04-17 16:15:57 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2023-04-17 16:26:11 +0000

    libsa: make single bit bitfields unsigned to avoid clang 16 warning
    
    Clang 16 introduced a warning about single bit bitfields in structs,
    which is triggered by a declaration in libsa's tftp.c:
    
        stand/libsa/tftp.c:382:20: error: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
                                        h->islastblock = 1;     /* very short file */
                                                       ^ ~
        stand/libsa/tftp.c:432:18: error: implicit truncation from 'int' to a one-bit wide bit-field changes value from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
                        h->islastblock = 1;     /* EOF */
                                       ^ ~
    
    Signed one-bit bitfields can only have values -1 and 0, but the intent
    here is to use the field as a boolean, so make it unsigned.
    
    MFC after:      3 days
---
 stand/libsa/tftp.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/stand/libsa/tftp.c b/stand/libsa/tftp.c
index 903537b4bbe5..f1e056da3561 100644
--- a/stand/libsa/tftp.c
+++ b/stand/libsa/tftp.c
@@ -106,8 +106,8 @@ static int	is_open = 0;
 struct tftp_handle {
 	struct iodesc  *iodesc;
 	int		currblock;	/* contents of lastdata */
-	int		islastblock:1;	/* flag */
-	int		tries:4;	/* number of read attempts */
+	unsigned int	islastblock:1;	/* flag */
+	unsigned int	tries:4;	/* number of read attempts */
 	int		validsize;
 	int		off;
 	char		*path;	/* saved for re-requests */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202304171626.33HGQvXv036586>