diff options
-rw-r--r-- | libnm/nm-client.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/libnm/nm-client.c b/libnm/nm-client.c index ee9418ce60..38b69100f9 100644 --- a/libnm/nm-client.c +++ b/libnm/nm-client.c @@ -2275,12 +2275,22 @@ objects_created (NMClient *client, GDBusObjectManager *object_manager, GError ** static void name_owner_changed (GObject *object, GParamSpec *pspec, gpointer user_data); static gboolean +_om_has_name_owner (GDBusObjectManager *object_manager) +{ + gs_free char *name_owner = NULL; + + nm_assert (G_IS_DBUS_OBJECT_MANAGER_CLIENT (object_manager)); + + name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (object_manager)); + return !!name_owner; +} + +static gboolean init_sync (GInitable *initable, GCancellable *cancellable, GError **error) { NMClient *client = NM_CLIENT (initable); NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (client); GList *objects, *iter; - gchar *name_owner; priv->object_manager = g_dbus_object_manager_client_new_for_bus_sync (_nm_dbus_bus_type (), G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START, @@ -2292,9 +2302,7 @@ init_sync (GInitable *initable, GCancellable *cancellable, GError **error) if (!priv->object_manager) return FALSE; - name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (priv->object_manager)); - if (name_owner) { - g_free (name_owner); + if (_om_has_name_owner (priv->object_manager)) { if (!objects_created (client, priv->object_manager, error)) return FALSE; @@ -2420,7 +2428,6 @@ got_object_manager (GObject *object, GAsyncResult *result, gpointer user_data) NMClient *client; NMClientPrivate *priv; GList *objects, *iter; - gchar *name_owner; GError *error = NULL; GDBusObjectManager *object_manager; @@ -2435,9 +2442,7 @@ got_object_manager (GObject *object, GAsyncResult *result, gpointer user_data) priv = NM_CLIENT_GET_PRIVATE (client); priv->object_manager = object_manager; - name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (priv->object_manager)); - if (name_owner) { - g_free (name_owner); + if (_om_has_name_owner (priv->object_manager)) { if (!objects_created (client, priv->object_manager, &error)) { g_simple_async_result_take_error (init_data->result, error); init_async_complete (init_data); @@ -2497,13 +2502,10 @@ name_owner_changed (GObject *object, GParamSpec *pspec, gpointer user_data) NMClient *self = user_data; NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (self); GDBusObjectManager *object_manager = G_DBUS_OBJECT_MANAGER (object); - gchar *name_owner; nm_assert (object_manager == priv->object_manager); - name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (object)); - if (name_owner) { - g_free (name_owner); + if (_om_has_name_owner (object_manager)) { g_clear_object (&priv->object_manager); nm_clear_g_cancellable (&priv->new_object_manager_cancellable); priv->new_object_manager_cancellable = g_cancellable_new (); |