diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2016-08-26 12:06:02 +0200 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2016-08-26 12:06:02 +0200 |
commit | 3fa5d1c07017206d626188a235eeafc5bacc4768 (patch) | |
tree | 0bf9d0a0d4797bc9bfed59b6db9dac5258032d10 | |
parent | 4cfec7f59a19fd6a3a4b3b615ef960920050ea76 (diff) | |
download | NetworkManager-bg/libnm-activation-stuck-rh1367752.tar.gz |
fixup! libnm: make waiting objects fail when an object initialization failsbg/libnm-activation-stuck-rh1367752
-rw-r--r-- | libnm/nm-object.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libnm/nm-object.c b/libnm/nm-object.c index 5acb6b4b54..337ca69862 100644 --- a/libnm/nm-object.c +++ b/libnm/nm-object.c @@ -489,6 +489,7 @@ static void create_async_inited (GObject *object, GAsyncResult *result, gpointer user_data) { NMObjectPrivate *priv = NM_OBJECT_GET_PRIVATE (object); + NMObjectPrivate *odata_priv; NMObjectTypeAsyncData *async_data = user_data; GError *error = NULL; ObjectCreatedData *odata; @@ -501,9 +502,12 @@ create_async_inited (GObject *object, GAsyncResult *result, gpointer user_data) while (priv->waiters) { odata = priv->waiters->data; + odata_priv = NM_OBJECT_GET_PRIVATE (odata->self); + priv->waiters = g_slist_remove (priv->waiters, odata); - NM_OBJECT_GET_PRIVATE (odata->self)->reload_error = g_error_copy (error); - NM_OBJECT_GET_PRIVATE (odata->self)->reload_remaining--; + if (!odata_priv->reload_error) + odata_priv->reload_error = g_error_copy (error); + odata_priv->reload_remaining--; reload_complete (odata->self, FALSE); } |