mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-24 17:10:08 +01:00
libnm: disconnect devices' signals when disposing manager
We connect signal handlers to devices when they appear, but don't disconnect the handlers when the manager instance is destroyed. This can cause crashes as device_ac_changed() is called on an invalid manager instance. Disconnect the handlers from dispose(). https://bugzilla.redhat.com/show_bug.cgi?id=1383758
This commit is contained in:
parent
c4325f6494
commit
0a61317870
1 changed files with 15 additions and 7 deletions
|
|
@ -1201,12 +1201,11 @@ free_devices (NMManager *manager, gboolean in_dispose)
|
|||
if (in_dispose) {
|
||||
priv->devices = NULL;
|
||||
priv->all_devices = NULL;
|
||||
return;
|
||||
} else {
|
||||
priv->devices = g_ptr_array_new_with_free_func (g_object_unref);
|
||||
priv->all_devices = g_ptr_array_new_with_free_func (g_object_unref);
|
||||
}
|
||||
|
||||
priv->devices = g_ptr_array_new_with_free_func (g_object_unref);
|
||||
priv->all_devices = g_ptr_array_new_with_free_func (g_object_unref);
|
||||
|
||||
if (all_devices && all_devices->len > 0)
|
||||
devices = all_devices;
|
||||
else if (real_devices && real_devices->len > 0)
|
||||
|
|
@ -1222,14 +1221,23 @@ free_devices (NMManager *manager, gboolean in_dispose)
|
|||
goto next;
|
||||
}
|
||||
}
|
||||
g_signal_emit (manager, signals[DEVICE_REMOVED], 0, d);
|
||||
if (in_dispose)
|
||||
device_removed (manager, d);
|
||||
else
|
||||
g_signal_emit (manager, signals[DEVICE_REMOVED], 0, d);
|
||||
next:
|
||||
;
|
||||
}
|
||||
}
|
||||
if (devices) {
|
||||
for (i = 0; i < devices->len; i++)
|
||||
g_signal_emit (manager, signals[DEVICE_REMOVED], 0, devices->pdata[i]);
|
||||
for (i = 0; i < devices->len; i++) {
|
||||
NMDevice *d = devices->pdata[i];
|
||||
|
||||
if (in_dispose)
|
||||
device_removed (manager, d);
|
||||
else
|
||||
g_signal_emit (manager, signals[DEVICE_REMOVED], 0, d);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue