core: avoid compiler warning in nm_ip_config_iter_ip4_address_for_each() macro

In file included from src/nm-ip6-config.c:24:0:
  src/nm-ip6-config.c: In function ‘nm_ip6_config_create_setting’:
  src/nm-ip6-config.c:734:62: error: the address of ‘address’ will always evaluate as ‘true’ [-Werror=address]
    nm_ip_config_iter_ip6_address_for_each (&ipconf_iter, self, &address) {
                                                                ^
  src/nm-ip6-config.h:60:17: note: in definition of macro ‘nm_ip_config_iter_ip6_address_for_each’
       for (({ if (address) { *(((const NMPlatformIP6Address **) address)) = NULL; } }), nm_ip_config_iter_ip6_address_init ((iter), (self)); \
                   ^

Fixes: 6e9aa9402a
This commit is contained in:
Thomas Haller 2017-08-30 14:05:16 +02:00
parent 44917a910a
commit d686636bf0
3 changed files with 19 additions and 4 deletions

View file

@ -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. */

View file

@ -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)); \
)

View file

@ -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)); \
)