diff --git a/shared/nm-utils/nm-macros-internal.h b/shared/nm-utils/nm-macros-internal.h index 66b4aa8d60..613e0432e1 100644 --- a/shared/nm-utils/nm-macros-internal.h +++ b/shared/nm-utils/nm-macros-internal.h @@ -687,6 +687,21 @@ nm_clear_g_cancellable (GCancellable **cancellable) /*****************************************************************************/ +/* Only useful inside a macro to avoid compiler warning. + * + * Otherwise compiler might warn for "if (ptr)" + * the address of ‘a’ will always evaluate as ‘true’ [-Werror=address] + * + * The trivial function avoids the compiler warning. + */ +static inline int +_nm_is_null (const void *ptr) +{ + return !!ptr; +} + +/*****************************************************************************/ + /* Determine whether @x is a power of two (@x being an integer type). * Basically, this returns TRUE, if @x has exactly one bit set. * For negative values and zero, this always returns FALSE. */ diff --git a/src/nm-ip4-config.h b/src/nm-ip4-config.h index 4d42cee35a..b8019f3f6d 100644 --- a/src/nm-ip4-config.h +++ b/src/nm-ip4-config.h @@ -64,12 +64,12 @@ nm_ip_config_iter_ip4_route_next (NMDedupMultiIter *ipconf_iter, const NMPlatfor } #define nm_ip_config_iter_ip4_address_for_each(iter, self, address) \ - for (({ if (address) { *((const NMPlatformIP4Address **) (address)) = NULL; } }), nm_ip_config_iter_ip4_address_init ((iter), (self)); \ + for (({ if (!_nm_is_null (address)) { *((const NMPlatformIP4Address **) (address)) = NULL; } }), nm_ip_config_iter_ip4_address_init ((iter), (self)); \ nm_ip_config_iter_ip4_address_next ((iter), (address)); \ ) #define nm_ip_config_iter_ip4_route_for_each(iter, self, route) \ - for (({ if (route) { *((const NMPlatformIP4Route **) (route)) = NULL; } }), nm_ip_config_iter_ip4_route_init ((iter), (self)); \ + for (({ if (!_nm_is_null (route)) { *((const NMPlatformIP4Route **) (route)) = NULL; } }), nm_ip_config_iter_ip4_route_init ((iter), (self)); \ nm_ip_config_iter_ip4_route_next ((iter), (route)); \ ) diff --git a/src/nm-ip6-config.h b/src/nm-ip6-config.h index 9f798041a4..3b42d4960c 100644 --- a/src/nm-ip6-config.h +++ b/src/nm-ip6-config.h @@ -57,12 +57,12 @@ nm_ip_config_iter_ip6_route_next (NMDedupMultiIter *ipconf_iter, const NMPlatfor } #define nm_ip_config_iter_ip6_address_for_each(iter, self, address) \ - for (({ if (address) { *(((const NMPlatformIP6Address **) address)) = NULL; } }), nm_ip_config_iter_ip6_address_init ((iter), (self)); \ + for (({ if (!_nm_is_null (address)) { *(((const NMPlatformIP6Address **) address)) = NULL; } }), nm_ip_config_iter_ip6_address_init ((iter), (self)); \ nm_ip_config_iter_ip6_address_next ((iter), (address)); \ ) #define nm_ip_config_iter_ip6_route_for_each(iter, self, route) \ - for (({ if (route) { *((const NMPlatformIP6Route **) (route)) = NULL; } }), nm_ip_config_iter_ip6_route_init ((iter), (self)); \ + for (({ if (!_nm_is_null (route)) { *((const NMPlatformIP6Route **) (route)) = NULL; } }), nm_ip_config_iter_ip6_route_init ((iter), (self)); \ nm_ip_config_iter_ip6_route_next ((iter), (route)); \ )