diff --git a/libnm/nm-access-point.c b/libnm/nm-access-point.c index 67b8550603..d9b1c502ef 100644 --- a/libnm/nm-access-point.c +++ b/libnm/nm-access-point.c @@ -170,7 +170,7 @@ nm_access_point_get_bssid (NMAccessPoint *ap) { g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), NULL); - return NM_ACCESS_POINT_GET_PRIVATE (ap)->bssid; + return nm_str_not_empty (NM_ACCESS_POINT_GET_PRIVATE (ap)->bssid); } /** diff --git a/libnm/nm-active-connection.c b/libnm/nm-active-connection.c index a1636598ac..2f04eff095 100644 --- a/libnm/nm-active-connection.c +++ b/libnm/nm-active-connection.c @@ -129,7 +129,7 @@ nm_active_connection_get_id (NMActiveConnection *connection) { g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL); - return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->id; + return nm_str_not_empty (NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->id); } /** @@ -146,7 +146,7 @@ nm_active_connection_get_uuid (NMActiveConnection *connection) { g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL); - return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->uuid; + return nm_str_not_empty (NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->uuid); } /** @@ -163,7 +163,7 @@ nm_active_connection_get_connection_type (NMActiveConnection *connection) { g_return_val_if_fail (NM_IS_ACTIVE_CONNECTION (connection), NULL); - return NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->type; + return nm_str_not_empty (NM_ACTIVE_CONNECTION_GET_PRIVATE (connection)->type); } /** @@ -461,6 +461,7 @@ get_property (GObject *object, static gboolean demarshal_specific_object_path (NMObject *object, GParamSpec *pspec, GVariant *value, gpointer field) { + const char *v; char **param = (char **) field; /* We have to demarshal this manually, because the D-Bus property name @@ -471,8 +472,10 @@ demarshal_specific_object_path (NMObject *object, GParamSpec *pspec, GVariant *v if (!g_variant_is_of_type (value, G_VARIANT_TYPE_OBJECT_PATH)) return FALSE; + v = g_variant_get_string (value, NULL); + g_free (*param); - *param = g_variant_dup_string (value, NULL); + *param = nm_streq0 (v, "/") ? NULL : g_strdup (v); return TRUE; } diff --git a/libnm/nm-device-bond.c b/libnm/nm-device-bond.c index e5977c6664..0a9fae86a2 100644 --- a/libnm/nm-device-bond.c +++ b/libnm/nm-device-bond.c @@ -64,7 +64,7 @@ nm_device_bond_get_hw_address (NMDeviceBond *device) { g_return_val_if_fail (NM_IS_DEVICE_BOND (device), NULL); - return NM_DEVICE_BOND_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_BOND_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-bridge.c b/libnm/nm-device-bridge.c index 83ad963410..cd885b4afb 100644 --- a/libnm/nm-device-bridge.c +++ b/libnm/nm-device-bridge.c @@ -64,7 +64,7 @@ nm_device_bridge_get_hw_address (NMDeviceBridge *device) { g_return_val_if_fail (NM_IS_DEVICE_BRIDGE (device), NULL); - return NM_DEVICE_BRIDGE_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_BRIDGE_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-bt.c b/libnm/nm-device-bt.c index 2c039d941e..f41b7abd8c 100644 --- a/libnm/nm-device-bt.c +++ b/libnm/nm-device-bt.c @@ -65,7 +65,7 @@ nm_device_bt_get_hw_address (NMDeviceBt *device) { g_return_val_if_fail (NM_IS_DEVICE_BT (device), NULL); - return NM_DEVICE_BT_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_BT_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-ethernet.c b/libnm/nm-device-ethernet.c index 15ca0257e6..966ad2d73e 100644 --- a/libnm/nm-device-ethernet.c +++ b/libnm/nm-device-ethernet.c @@ -69,7 +69,7 @@ nm_device_ethernet_get_hw_address (NMDeviceEthernet *device) { g_return_val_if_fail (NM_IS_DEVICE_ETHERNET (device), NULL); - return NM_DEVICE_ETHERNET_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_ETHERNET_GET_PRIVATE (device)->hw_address); } /** @@ -86,7 +86,7 @@ nm_device_ethernet_get_permanent_hw_address (NMDeviceEthernet *device) { g_return_val_if_fail (NM_IS_DEVICE_ETHERNET (device), NULL); - return NM_DEVICE_ETHERNET_GET_PRIVATE (device)->perm_hw_address; + return nm_str_not_empty (NM_DEVICE_ETHERNET_GET_PRIVATE (device)->perm_hw_address); } /** diff --git a/libnm/nm-device-generic.c b/libnm/nm-device-generic.c index 9dd1c945ec..6bc1336219 100644 --- a/libnm/nm-device-generic.c +++ b/libnm/nm-device-generic.c @@ -59,7 +59,7 @@ nm_device_generic_get_hw_address (NMDeviceGeneric *device) { g_return_val_if_fail (NM_IS_DEVICE_GENERIC (device), NULL); - return NM_DEVICE_GENERIC_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_GENERIC_GET_PRIVATE (device)->hw_address); } /*****************************************************************************/ @@ -69,7 +69,7 @@ get_type_description (NMDevice *device) { NMDeviceGenericPrivate *priv = NM_DEVICE_GENERIC_GET_PRIVATE (device); - return priv->type_description; + return nm_str_not_empty (priv->type_description); } static const char * @@ -150,14 +150,15 @@ get_property (GObject *object, GValue *value, GParamSpec *pspec) { - NMDeviceGenericPrivate *priv = NM_DEVICE_GENERIC_GET_PRIVATE (object); + NMDeviceGeneric *self = NM_DEVICE_GENERIC (object); + NMDeviceGenericPrivate *priv = NM_DEVICE_GENERIC_GET_PRIVATE (self); switch (prop_id) { case PROP_HW_ADDRESS: g_value_set_string (value, priv->hw_address); break; case PROP_TYPE_DESCRIPTION: - g_value_set_string (value, priv->type_description); + g_value_set_string (value, get_type_description ((NMDevice *) self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); diff --git a/libnm/nm-device-infiniband.c b/libnm/nm-device-infiniband.c index 0f92f8304b..665542881e 100644 --- a/libnm/nm-device-infiniband.c +++ b/libnm/nm-device-infiniband.c @@ -61,7 +61,7 @@ nm_device_infiniband_get_hw_address (NMDeviceInfiniband *device) { g_return_val_if_fail (NM_IS_DEVICE_INFINIBAND (device), NULL); - return NM_DEVICE_INFINIBAND_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_INFINIBAND_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-ip-tunnel.c b/libnm/nm-device-ip-tunnel.c index 6410c48c4d..41748aba10 100644 --- a/libnm/nm-device-ip-tunnel.c +++ b/libnm/nm-device-ip-tunnel.c @@ -111,7 +111,7 @@ nm_device_ip_tunnel_get_local (NMDeviceIPTunnel *device) { g_return_val_if_fail (NM_IS_DEVICE_IP_TUNNEL (device), NULL); - return NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->local; + return nm_str_not_empty (NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->local); } /** @@ -127,7 +127,7 @@ nm_device_ip_tunnel_get_remote (NMDeviceIPTunnel *device) { g_return_val_if_fail (NM_IS_DEVICE_IP_TUNNEL (device), NULL); - return NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->remote; + return nm_str_not_empty (NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->remote); } /** @@ -192,7 +192,7 @@ nm_device_ip_tunnel_get_input_key (NMDeviceIPTunnel *device) { g_return_val_if_fail (NM_IS_DEVICE_IP_TUNNEL (device), NULL); - return NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->input_key; + return nm_str_not_empty (NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->input_key); } /** @@ -208,7 +208,7 @@ nm_device_ip_tunnel_get_output_key (NMDeviceIPTunnel *device) { g_return_val_if_fail (NM_IS_DEVICE_IP_TUNNEL (device), NULL); - return NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->output_key; + return nm_str_not_empty (NM_DEVICE_IP_TUNNEL_GET_PRIVATE (device)->output_key); } /** diff --git a/libnm/nm-device-macvlan.c b/libnm/nm-device-macvlan.c index 610bdc35f2..a370ed1e67 100644 --- a/libnm/nm-device-macvlan.c +++ b/libnm/nm-device-macvlan.c @@ -86,7 +86,7 @@ nm_device_macvlan_get_mode (NMDeviceMacvlan *device) { g_return_val_if_fail (NM_IS_DEVICE_MACVLAN (device), NULL); - return NM_DEVICE_MACVLAN_GET_PRIVATE (device)->mode; + return nm_str_not_empty (NM_DEVICE_MACVLAN_GET_PRIVATE (device)->mode); } /** @@ -141,7 +141,7 @@ nm_device_macvlan_get_hw_address (NMDeviceMacvlan *device) { g_return_val_if_fail (NM_IS_DEVICE_MACVLAN (device), NULL); - return NM_DEVICE_MACVLAN_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_MACVLAN_GET_PRIVATE (device)->hw_address); } diff --git a/libnm/nm-device-olpc-mesh.c b/libnm/nm-device-olpc-mesh.c index a11050f5b4..c69d0b3748 100644 --- a/libnm/nm-device-olpc-mesh.c +++ b/libnm/nm-device-olpc-mesh.c @@ -63,7 +63,7 @@ nm_device_olpc_mesh_get_hw_address (NMDeviceOlpcMesh *device) { g_return_val_if_fail (NM_IS_DEVICE_OLPC_MESH (device), NULL); - return NM_DEVICE_OLPC_MESH_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_OLPC_MESH_GET_PRIVATE (device)->hw_address); } /** diff --git a/libnm/nm-device-team.c b/libnm/nm-device-team.c index 8179bd52f4..0c5383deea 100644 --- a/libnm/nm-device-team.c +++ b/libnm/nm-device-team.c @@ -66,7 +66,7 @@ nm_device_team_get_hw_address (NMDeviceTeam *device) { g_return_val_if_fail (NM_IS_DEVICE_TEAM (device), NULL); - return NM_DEVICE_TEAM_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_TEAM_GET_PRIVATE (device)->hw_address); } /** @@ -119,7 +119,7 @@ nm_device_team_get_config (NMDeviceTeam *device) { g_return_val_if_fail (NM_IS_DEVICE_TEAM (device), NULL); - return NM_DEVICE_TEAM_GET_PRIVATE (device)->config; + return nm_str_not_empty (NM_DEVICE_TEAM_GET_PRIVATE (device)->config); } static const char * diff --git a/libnm/nm-device-tun.c b/libnm/nm-device-tun.c index e4e412f8fe..52ba8fd7da 100644 --- a/libnm/nm-device-tun.c +++ b/libnm/nm-device-tun.c @@ -74,7 +74,7 @@ nm_device_tun_get_hw_address (NMDeviceTun *device) { g_return_val_if_fail (NM_IS_DEVICE_TUN (device), NULL); - return NM_DEVICE_TUN_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_TUN_GET_PRIVATE (device)->hw_address); } /** @@ -92,7 +92,7 @@ nm_device_tun_get_mode (NMDeviceTun *device) { g_return_val_if_fail (NM_IS_DEVICE_TUN (device), NULL); - return NM_DEVICE_TUN_GET_PRIVATE (device)->mode; + return nm_str_not_empty (NM_DEVICE_TUN_GET_PRIVATE (device)->mode); } /** diff --git a/libnm/nm-device-vlan.c b/libnm/nm-device-vlan.c index 7083b24484..b67ad373ca 100644 --- a/libnm/nm-device-vlan.c +++ b/libnm/nm-device-vlan.c @@ -66,7 +66,7 @@ nm_device_vlan_get_hw_address (NMDeviceVlan *device) { g_return_val_if_fail (NM_IS_DEVICE_VLAN (device), NULL); - return NM_DEVICE_VLAN_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_VLAN_GET_PRIVATE (device)->hw_address); } /** @@ -116,6 +116,7 @@ nm_device_vlan_get_vlan_id (NMDeviceVlan *device) static gboolean connection_compatible (NMDevice *device, NMConnection *connection, GError **error) { + NMDeviceVlanPrivate *priv; NMSettingVlan *s_vlan; NMSettingWired *s_wired; const char *setting_hwaddr; @@ -142,8 +143,10 @@ connection_compatible (NMDevice *device, NMConnection *connection, GError **erro else setting_hwaddr = NULL; if (setting_hwaddr) { - if (!nm_utils_hwaddr_matches (setting_hwaddr, -1, - NM_DEVICE_VLAN_GET_PRIVATE (device)->hw_address, -1)) { + priv = NM_DEVICE_VLAN_GET_PRIVATE (device); + if ( !priv->hw_address + || !nm_utils_hwaddr_matches (setting_hwaddr, -1, + priv->hw_address, -1)) { g_set_error_literal (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_INCOMPATIBLE_CONNECTION, _("The hardware address of the device and the connection didn't match.")); } diff --git a/libnm/nm-device-vxlan.c b/libnm/nm-device-vxlan.c index 86b5fca8e7..ee356749da 100644 --- a/libnm/nm-device-vxlan.c +++ b/libnm/nm-device-vxlan.c @@ -95,7 +95,7 @@ nm_device_vxlan_get_hw_address (NMDeviceVxlan *device) { g_return_val_if_fail (NM_IS_DEVICE_VXLAN (device), NULL); - return NM_DEVICE_VXLAN_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_VXLAN_GET_PRIVATE (device)->hw_address); } /** @@ -162,7 +162,7 @@ nm_device_vxlan_get_group (NMDeviceVxlan *device) { g_return_val_if_fail (NM_IS_DEVICE_VXLAN (device), NULL); - return NM_DEVICE_VXLAN_GET_PRIVATE (device)->group; + return nm_str_not_empty (NM_DEVICE_VXLAN_GET_PRIVATE (device)->group); } /** @@ -178,7 +178,7 @@ nm_device_vxlan_get_local (NMDeviceVxlan *device) { g_return_val_if_fail (NM_IS_DEVICE_VXLAN (device), NULL); - return NM_DEVICE_VXLAN_GET_PRIVATE (device)->local; + return nm_str_not_empty (NM_DEVICE_VXLAN_GET_PRIVATE (device)->local); } /** @@ -458,6 +458,8 @@ finalize (GObject *object) g_free (priv->hw_address); g_clear_object (&priv->parent); + g_free (priv->group); + g_free (priv->local); G_OBJECT_CLASS (nm_device_vxlan_parent_class)->finalize (object); } diff --git a/libnm/nm-device-wifi.c b/libnm/nm-device-wifi.c index 790ddf4ca6..f705dbd2ea 100644 --- a/libnm/nm-device-wifi.c +++ b/libnm/nm-device-wifi.c @@ -100,7 +100,7 @@ nm_device_wifi_get_hw_address (NMDeviceWifi *device) { g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), NULL); - return NM_DEVICE_WIFI_GET_PRIVATE (device)->hw_address; + return nm_str_not_empty (NM_DEVICE_WIFI_GET_PRIVATE (device)->hw_address); } /** @@ -117,7 +117,7 @@ nm_device_wifi_get_permanent_hw_address (NMDeviceWifi *device) { g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), NULL); - return NM_DEVICE_WIFI_GET_PRIVATE (device)->perm_hw_address; + return nm_str_not_empty (NM_DEVICE_WIFI_GET_PRIVATE (device)->perm_hw_address); } /** @@ -520,10 +520,7 @@ clean_up_aps (NMDeviceWifi *self, gboolean in_dispose) priv = NM_DEVICE_WIFI_GET_PRIVATE (self); - if (priv->active_ap) { - g_object_unref (priv->active_ap); - priv->active_ap = NULL; - } + g_clear_object (&priv->active_ap); aps = priv->aps; @@ -722,10 +719,7 @@ state_changed_cb (NMDevice *device, GParamSpec *pspec, gpointer user_data) case NM_DEVICE_STATE_DISCONNECTED: case NM_DEVICE_STATE_FAILED: /* Just clear active AP; don't clear the AP list unless wireless is disabled completely */ - if (priv->active_ap) { - g_object_unref (priv->active_ap); - priv->active_ap = NULL; - } + g_clear_object (&priv->active_ap); _nm_object_queue_notify (NM_OBJECT (device), NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT); priv->rate = 0; _nm_object_queue_notify (NM_OBJECT (device), NM_DEVICE_WIFI_BITRATE); @@ -764,8 +758,7 @@ access_point_removed (NMDeviceWifi *self, NMAccessPoint *ap) NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self); if (ap == priv->active_ap) { - g_object_unref (priv->active_ap); - priv->active_ap = NULL; + g_clear_object (&priv->active_ap); _nm_object_queue_notify (NM_OBJECT (self), NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT); priv->rate = 0; diff --git a/libnm/nm-device-wimax.c b/libnm/nm-device-wimax.c index e14925f778..98c651d3d6 100644 --- a/libnm/nm-device-wimax.c +++ b/libnm/nm-device-wimax.c @@ -91,7 +91,7 @@ nm_device_wimax_get_hw_address (NMDeviceWimax *wimax) { g_return_val_if_fail (NM_IS_DEVICE_WIMAX (wimax), NULL); - return NM_DEVICE_WIMAX_GET_PRIVATE (wimax)->hw_address; + return nm_str_not_empty (NM_DEVICE_WIMAX_GET_PRIVATE (wimax)->hw_address); } /** @@ -300,7 +300,7 @@ nm_device_wimax_get_bsid (NMDeviceWimax *self) { g_return_val_if_fail (NM_IS_DEVICE_WIMAX (self), NULL); - return NM_DEVICE_WIMAX_GET_PRIVATE (self)->bsid; + return nm_str_not_empty (NM_DEVICE_WIMAX_GET_PRIVATE (self)->bsid); } static gboolean diff --git a/libnm/nm-device.c b/libnm/nm-device.c index b3dc01b20f..228e60b70b 100644 --- a/libnm/nm-device.c +++ b/libnm/nm-device.c @@ -996,7 +996,7 @@ nm_device_get_iface (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return NM_DEVICE_GET_PRIVATE (device)->iface; + return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->iface); } /** @@ -1014,7 +1014,7 @@ nm_device_get_ip_iface (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return NM_DEVICE_GET_PRIVATE (device)->ip_iface; + return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->ip_iface); } /** @@ -1048,7 +1048,7 @@ nm_device_get_udi (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return NM_DEVICE_GET_PRIVATE (device)->udi; + return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->udi); } /** @@ -1065,7 +1065,7 @@ nm_device_get_driver (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return NM_DEVICE_GET_PRIVATE (device)->driver; + return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->driver); } /** @@ -1082,7 +1082,7 @@ nm_device_get_driver_version (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return NM_DEVICE_GET_PRIVATE (device)->driver_version; + return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->driver_version); } /** @@ -1099,7 +1099,7 @@ nm_device_get_firmware_version (NMDevice *device) { g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - return NM_DEVICE_GET_PRIVATE (device)->firmware_version; + return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->firmware_version); } /** @@ -1124,7 +1124,7 @@ nm_device_get_type_description (NMDevice *device) g_return_val_if_fail (NM_IS_DEVICE (device), NULL); if (priv->type_description) - return priv->type_description; + return nm_str_not_empty (priv->type_description); if (NM_DEVICE_GET_CLASS (device)->get_type_description) { desc = NM_DEVICE_GET_CLASS (device)->get_type_description (device); @@ -1137,7 +1137,7 @@ nm_device_get_type_description (NMDevice *device) typename += 8; priv->type_description = g_ascii_strdown (typename, -1); - return priv->type_description; + return nm_str_not_empty (priv->type_description); } /** @@ -2084,16 +2084,9 @@ done: const char * nm_device_get_physical_port_id (NMDevice *device) { - NMDevicePrivate *priv; - g_return_val_if_fail (NM_IS_DEVICE (device), NULL); - priv = NM_DEVICE_GET_PRIVATE (device); - - if (priv->physical_port_id && *priv->physical_port_id) - return priv->physical_port_id; - else - return NULL; + return nm_str_not_empty (NM_DEVICE_GET_PRIVATE (device)->physical_port_id); } /** diff --git a/libnm/nm-ip-config.c b/libnm/nm-ip-config.c index 97fb0aa926..74db9994f3 100644 --- a/libnm/nm-ip-config.c +++ b/libnm/nm-ip-config.c @@ -395,7 +395,7 @@ nm_ip_config_get_gateway (NMIPConfig *config) { g_return_val_if_fail (NM_IS_IP_CONFIG (config), NULL); - return NM_IP_CONFIG_GET_PRIVATE (config)->gateway; + return nm_str_not_empty (NM_IP_CONFIG_GET_PRIVATE (config)->gateway); } /** diff --git a/libnm/nm-manager.c b/libnm/nm-manager.c index 01ed4fa50a..e490104803 100644 --- a/libnm/nm-manager.c +++ b/libnm/nm-manager.c @@ -382,7 +382,7 @@ nm_manager_get_version (NMManager *manager) { g_return_val_if_fail (NM_IS_MANAGER (manager), NULL); - return NM_MANAGER_GET_PRIVATE (manager)->version; + return nm_str_not_empty (NM_MANAGER_GET_PRIVATE (manager)->version); } NMState diff --git a/libnm/nm-vpn-connection.c b/libnm/nm-vpn-connection.c index 4b96210b46..5780fb3a78 100644 --- a/libnm/nm-vpn-connection.c +++ b/libnm/nm-vpn-connection.c @@ -79,7 +79,7 @@ nm_vpn_connection_get_banner (NMVpnConnection *vpn) if (priv->vpn_state != NM_VPN_CONNECTION_STATE_ACTIVATED) return NULL; - return priv->banner; + return nm_str_not_empty (priv->banner); } /** diff --git a/shared/nm-utils/nm-macros-internal.h b/shared/nm-utils/nm-macros-internal.h index 0b99b0bf56..26b69bc138 100644 --- a/shared/nm-utils/nm-macros-internal.h +++ b/shared/nm-utils/nm-macros-internal.h @@ -265,13 +265,11 @@ _NM_IN_STRSET_streq (const char *x, const char *s) /*****************************************************************************/ -#define nm_str_not_empty(str) \ - ({ \ - /* implemented as macro to preserve constness */ \ - typeof (str) __str = (str); \ - _nm_unused const char *__str_type_check = __str; \ - ((__str && __str[0]) ? __str : ((char *) NULL)); \ - }) +static inline const char * +nm_str_not_empty (const char *str) +{ + return str && str[0] ? str : NULL; +} static inline char * nm_strdup_not_empty (const char *str) diff --git a/src/devices/team/nm-device-team.c b/src/devices/team/nm-device-team.c index c2654b7bf9..11dcdaa9ec 100644 --- a/src/devices/team/nm-device-team.c +++ b/src/devices/team/nm-device-team.c @@ -166,18 +166,28 @@ ensure_teamd_connection (NMDevice *device) return !!priv->tdc; } +static const char * +_get_config (NMDeviceTeam *self) +{ + return nm_str_not_empty (NM_DEVICE_TEAM_GET_PRIVATE (self)->config); +} + static gboolean teamd_read_config (NMDevice *device) { NMDeviceTeam *self = NM_DEVICE_TEAM (device); NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (self); - char *config = NULL; + const char *config = NULL; int err; if (priv->tdc) { - err = teamdctl_config_actual_get_raw_direct (priv->tdc, &config); + err = teamdctl_config_actual_get_raw_direct (priv->tdc, (char **) &config); if (err) return FALSE; + if (!config) { + /* set "" to distinguish an empty result from no config at all. */ + config = ""; + } } if (!nm_streq0 (config, priv->config)) { @@ -224,7 +234,7 @@ update_connection (NMDevice *device, NMConnection *connection) priv->tdc = NULL; } - g_object_set (G_OBJECT (s_team), NM_SETTING_TEAM_CONFIG, priv->config, NULL); + g_object_set (G_OBJECT (s_team), _get_config (self), NULL); } /*****************************************************************************/ @@ -768,11 +778,10 @@ get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { NMDeviceTeam *self = NM_DEVICE_TEAM (object); - NMDeviceTeamPrivate *priv = NM_DEVICE_TEAM_GET_PRIVATE (self); switch (prop_id) { case PROP_CONFIG: - g_value_set_string (value, priv->config); + g_value_set_string (value, _get_config (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);