[1/2] libfsimage: fix clang 10 build
diff mbox series

Message ID 20200313084558.13759-1-roger.pau@citrix.com
State New
Headers show
Series
  • [1/2] libfsimage: fix clang 10 build
Related show

Commit Message

Roger Pau Monné March 13, 2020, 8:45 a.m. UTC
clang complains with:

fsys_zfs.c:826:2: error: converting the enum constant to a boolean [-Werror,-Wint-in-bool-context]
        VERIFY_DN_TYPE(dn, DMU_OT_PLAIN_FILE_CONTENTS);
        ^
/wrkdirs/usr/ports/sysutils/xen-tools/work/xen-4.13.0/tools/libfsimage/zfs/../../../tools/libfsimage/zfs/fsys_zfs.h:74:11: note: expanded from macro 'VERIFY_DN_TYPE'
        if (type && (dnp)->dn_type != type) { \
                 ^
1 error generated.

Fix this by not forcing an implicit conversion of the enum into a
boolean and instead comparing with the 0 enumerator.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 tools/libfsimage/zfs/fsys_zfs.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Wei Liu March 13, 2020, 10:20 a.m. UTC | #1
On Fri, Mar 13, 2020 at 09:45:57AM +0100, Roger Pau Monne wrote:
> clang complains with:
> 
> fsys_zfs.c:826:2: error: converting the enum constant to a boolean [-Werror,-Wint-in-bool-context]
>         VERIFY_DN_TYPE(dn, DMU_OT_PLAIN_FILE_CONTENTS);
>         ^
> /wrkdirs/usr/ports/sysutils/xen-tools/work/xen-4.13.0/tools/libfsimage/zfs/../../../tools/libfsimage/zfs/fsys_zfs.h:74:11: note: expanded from macro 'VERIFY_DN_TYPE'
>         if (type && (dnp)->dn_type != type) { \
>                  ^
> 1 error generated.
> 
> Fix this by not forcing an implicit conversion of the enum into a
> boolean and instead comparing with the 0 enumerator.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>

Both patches:

Acked-by: Wei Liu <wl@xen.org>

Patch
diff mbox series

diff --git a/tools/libfsimage/zfs/fsys_zfs.h b/tools/libfsimage/zfs/fsys_zfs.h
index 5cd627dbac..721972a05a 100644
--- a/tools/libfsimage/zfs/fsys_zfs.h
+++ b/tools/libfsimage/zfs/fsys_zfs.h
@@ -71,7 +71,7 @@  typedef	unsigned int size_t;
  * Can only be used in functions returning non-0 for failure.
  */
 #define	VERIFY_DN_TYPE(dnp, type) \
-	if (type && (dnp)->dn_type != type) { \
+	if (type != DMU_OT_NONE && (dnp)->dn_type != type) { \
 		return (ERR_FSYS_CORRUPT); \
 	}
 
@@ -80,7 +80,7 @@  typedef	unsigned int size_t;
  * Can only be used in functions returning 0 for failure.
  */
 #define	VERIFY_OS_TYPE(osp, type) \
-	if (type && (osp)->os_type != type) { \
+	if (type != DMU_OST_NONE && (osp)->os_type != type) { \
 		errnum = ERR_FSYS_CORRUPT; \
 		return (0); \
 	}