device: simplify resource management in nm_device_master_release_slave()

This commit is contained in:
Thomas Haller 2022-09-28 20:47:33 +02:00
parent 07e0ab48d1
commit cf942832c3
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728

View file

@ -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,