mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-05 04:08:01 +02:00
device: simplify resource management in nm_device_master_release_slave()
This commit is contained in:
parent
07e0ab48d1
commit
cf942832c3
1 changed files with 8 additions and 6 deletions
|
|
@ -6198,7 +6198,8 @@ nm_device_master_release_slave(NMDevice *self,
|
|||
NMDevicePrivate *priv;
|
||||
NMDevicePrivate *slave_priv;
|
||||
SlaveInfo *info;
|
||||
gs_unref_object NMDevice *self_free = NULL;
|
||||
gs_unref_object NMDevice *self_free = NULL;
|
||||
gs_unref_object NMDevice *slave_free = NULL;
|
||||
|
||||
g_return_if_fail(NM_DEVICE(self));
|
||||
g_return_if_fail(NM_DEVICE(slave));
|
||||
|
|
@ -6241,14 +6242,15 @@ nm_device_master_release_slave(NMDevice *self,
|
|||
|
||||
/* keep both alive until the end of the function.
|
||||
* Transfers ownership from slave_priv->master. */
|
||||
self_free = self;
|
||||
nm_assert(self == slave_priv->master);
|
||||
self_free = g_steal_pointer(&slave_priv->master);
|
||||
|
||||
nm_assert(slave == info->slave);
|
||||
slave_free = g_steal_pointer(&info->slave);
|
||||
|
||||
c_list_unlink(&info->lst_slave);
|
||||
slave_priv->master = NULL;
|
||||
|
||||
g_signal_handler_disconnect(slave, info->watch_id);
|
||||
g_object_unref(slave);
|
||||
g_slice_free(SlaveInfo, info);
|
||||
nm_g_slice_free(info);
|
||||
|
||||
if (c_list_is_empty(&priv->slaves)) {
|
||||
_active_connection_set_state_flags_full(self,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue