2007-12-07 Dan Williams <dcbw@redhat.com>
Noticed by Christian Persch <chpe@gnome.org> Always chain up to parent object in dispose and finalize handlers. (gnome.org #433112) git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3154 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
|
2007-12-07 Dan Williams <dcbw@redhat.com>
|
||||||
|
|
||||||
|
Noticed by Christian Persch <chpe@gnome.org>
|
||||||
|
|
||||||
|
Always chain up to parent object in dispose and finalize handlers.
|
||||||
|
(gnome.org #433112)
|
||||||
|
|
||||||
2007-12-07 Dan Williams <dcbw@redhat.com>
|
2007-12-07 Dan Williams <dcbw@redhat.com>
|
||||||
|
|
||||||
* src/nm-device-802-11-wireless.c
|
* src/nm-device-802-11-wireless.c
|
||||||
|
@@ -316,8 +316,11 @@ dispose (GObject *object)
|
|||||||
{
|
{
|
||||||
NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (object);
|
NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (object);
|
||||||
|
|
||||||
if (priv->disposed)
|
if (priv->disposed) {
|
||||||
|
G_OBJECT_CLASS (nm_access_point_parent_class)->dispose (object);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
priv->disposed = TRUE;
|
priv->disposed = TRUE;
|
||||||
|
|
||||||
g_object_unref (priv->ap_proxy);
|
g_object_unref (priv->ap_proxy);
|
||||||
|
@@ -166,6 +166,8 @@ finalize (GObject *object)
|
|||||||
g_object_unref (priv->client_proxy);
|
g_object_unref (priv->client_proxy);
|
||||||
g_object_unref (priv->bus_proxy);
|
g_object_unref (priv->bus_proxy);
|
||||||
g_hash_table_destroy (priv->devices);
|
g_hash_table_destroy (priv->devices);
|
||||||
|
|
||||||
|
G_OBJECT_CLASS (nm_client_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@@ -489,8 +489,10 @@ dispose (GObject *object)
|
|||||||
{
|
{
|
||||||
NMDevice80211WirelessPrivate *priv = NM_DEVICE_802_11_WIRELESS_GET_PRIVATE (object);
|
NMDevice80211WirelessPrivate *priv = NM_DEVICE_802_11_WIRELESS_GET_PRIVATE (object);
|
||||||
|
|
||||||
if (priv->disposed)
|
if (priv->disposed) {
|
||||||
|
G_OBJECT_CLASS (nm_device_802_11_wireless_parent_class)->dispose (object);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
priv->disposed = TRUE;
|
priv->disposed = TRUE;
|
||||||
|
|
||||||
|
@@ -50,8 +50,10 @@ dispose (GObject *object)
|
|||||||
{
|
{
|
||||||
NMDevice8023EthernetPrivate *priv = NM_DEVICE_802_3_ETHERNET_GET_PRIVATE (object);
|
NMDevice8023EthernetPrivate *priv = NM_DEVICE_802_3_ETHERNET_GET_PRIVATE (object);
|
||||||
|
|
||||||
if (priv->disposed)
|
if (priv->disposed) {
|
||||||
|
G_OBJECT_CLASS (nm_device_802_3_ethernet_parent_class)->dispose (object);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
priv->disposed = TRUE;
|
priv->disposed = TRUE;
|
||||||
|
|
||||||
|
@@ -93,8 +93,10 @@ dispose (GObject *object)
|
|||||||
{
|
{
|
||||||
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (object);
|
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (object);
|
||||||
|
|
||||||
if (priv->disposed)
|
if (priv->disposed) {
|
||||||
|
G_OBJECT_CLASS (nm_device_parent_class)->dispose (object);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
priv->disposed = TRUE;
|
priv->disposed = TRUE;
|
||||||
|
|
||||||
|
@@ -64,8 +64,10 @@ dispose (GObject *object)
|
|||||||
{
|
{
|
||||||
NMObjectPrivate *priv = NM_OBJECT_GET_PRIVATE (object);
|
NMObjectPrivate *priv = NM_OBJECT_GET_PRIVATE (object);
|
||||||
|
|
||||||
if (priv->disposed)
|
if (priv->disposed) {
|
||||||
|
G_OBJECT_CLASS (nm_object_parent_class)->dispose (object);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
priv->disposed = TRUE;
|
priv->disposed = TRUE;
|
||||||
|
|
||||||
|
@@ -45,8 +45,10 @@ dispose (GObject *object)
|
|||||||
{
|
{
|
||||||
NMUmtsDevicePrivate *priv = NM_UMTS_DEVICE_GET_PRIVATE (object);
|
NMUmtsDevicePrivate *priv = NM_UMTS_DEVICE_GET_PRIVATE (object);
|
||||||
|
|
||||||
if (priv->disposed)
|
if (priv->disposed) {
|
||||||
|
G_OBJECT_CLASS (nm_umts_device_parent_class)->dispose (object);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
priv->disposed = TRUE;
|
priv->disposed = TRUE;
|
||||||
|
|
||||||
|
@@ -204,6 +204,7 @@ finalize (GObject *object)
|
|||||||
g_free (priv->banner);
|
g_free (priv->banner);
|
||||||
|
|
||||||
g_object_unref (priv->proxy);
|
g_object_unref (priv->proxy);
|
||||||
|
G_OBJECT_CLASS (nm_vpn_connection_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@@ -120,6 +120,7 @@ static void
|
|||||||
finalize (GObject *object)
|
finalize (GObject *object)
|
||||||
{
|
{
|
||||||
g_object_unref (NM_VPN_MANAGER_GET_PRIVATE (object)->manager_proxy);
|
g_object_unref (NM_VPN_MANAGER_GET_PRIVATE (object)->manager_proxy);
|
||||||
|
G_OBJECT_CLASS (nm_vpn_manager_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@@ -565,8 +565,10 @@ dispose (GObject *object)
|
|||||||
NMVPNServiceState state;
|
NMVPNServiceState state;
|
||||||
GError *err = NULL;
|
GError *err = NULL;
|
||||||
|
|
||||||
if (priv->disposed)
|
if (priv->disposed) {
|
||||||
|
G_OBJECT_CLASS (nm_vpn_plugin_parent_class)->dispose (object);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
priv->disposed = TRUE;
|
priv->disposed = TRUE;
|
||||||
|
|
||||||
|
@@ -776,12 +776,17 @@ nm_named_manager_dispose (GObject *object)
|
|||||||
NMNamedManager *mgr = NM_NAMED_MANAGER (object);
|
NMNamedManager *mgr = NM_NAMED_MANAGER (object);
|
||||||
GSList *elt;
|
GSList *elt;
|
||||||
|
|
||||||
if (mgr->priv->disposed)
|
if (mgr->priv->disposed) {
|
||||||
|
G_OBJECT_CLASS (nm_named_manager_parent_class)->dispose (object);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
mgr->priv->disposed = TRUE;
|
mgr->priv->disposed = TRUE;
|
||||||
|
|
||||||
for (elt = mgr->priv->configs; elt; elt = g_slist_next (elt))
|
for (elt = mgr->priv->configs; elt; elt = g_slist_next (elt))
|
||||||
remove_ip4_config_from_named (mgr, (NMIP4Config *)(elt->data));
|
remove_ip4_config_from_named (mgr, (NMIP4Config *)(elt->data));
|
||||||
|
|
||||||
|
G_OBJECT_CLASS (nm_named_manager_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@@ -2862,9 +2862,10 @@ nm_device_802_11_wireless_dispose (GObject *object)
|
|||||||
NMDevice80211Wireless *self = NM_DEVICE_802_11_WIRELESS (object);
|
NMDevice80211Wireless *self = NM_DEVICE_802_11_WIRELESS (object);
|
||||||
NMDevice80211WirelessPrivate *priv = NM_DEVICE_802_11_WIRELESS_GET_PRIVATE (self);
|
NMDevice80211WirelessPrivate *priv = NM_DEVICE_802_11_WIRELESS_GET_PRIVATE (self);
|
||||||
|
|
||||||
/* Make sure dispose does not run twice. */
|
if (priv->dispose_has_run) {
|
||||||
if (priv->dispose_has_run)
|
G_OBJECT_CLASS (nm_device_802_11_wireless_parent_class)->dispose (object);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
priv->dispose_has_run = TRUE;
|
priv->dispose_has_run = TRUE;
|
||||||
|
|
||||||
|
@@ -395,6 +395,13 @@ nm_device_802_3_ethernet_dispose (GObject *object)
|
|||||||
NMDevice8023EthernetPrivate *priv = NM_DEVICE_802_3_ETHERNET_GET_PRIVATE (object);
|
NMDevice8023EthernetPrivate *priv = NM_DEVICE_802_3_ETHERNET_GET_PRIVATE (object);
|
||||||
NMNetlinkMonitor *monitor;
|
NMNetlinkMonitor *monitor;
|
||||||
|
|
||||||
|
if (priv->dispose_has_run) {
|
||||||
|
G_OBJECT_CLASS (nm_device_802_3_ethernet_parent_class)->dispose (object);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
priv->dispose_has_run = TRUE;
|
||||||
|
|
||||||
monitor = nm_netlink_monitor_get ();
|
monitor = nm_netlink_monitor_get ();
|
||||||
if (priv->link_connected_id) {
|
if (priv->link_connected_id) {
|
||||||
g_signal_handler_disconnect (monitor, priv->link_connected_id);
|
g_signal_handler_disconnect (monitor, priv->link_connected_id);
|
||||||
|
@@ -1543,17 +1543,9 @@ nm_device_dispose (GObject *object)
|
|||||||
{
|
{
|
||||||
NMDevice *self = NM_DEVICE (object);
|
NMDevice *self = NM_DEVICE (object);
|
||||||
|
|
||||||
if (self->priv->dispose_has_run) {
|
if (self->priv->dispose_has_run || !self->priv->initialized)
|
||||||
/* If dispose already ran, return. */
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!self->priv->initialized) {
|
|
||||||
/* Don't tear down stuff that might not yet be set up */
|
|
||||||
goto out;
|
goto out;
|
||||||
}
|
|
||||||
|
|
||||||
/* Make sure dispose does not run twice. */
|
|
||||||
self->priv->dispose_has_run = TRUE;
|
self->priv->dispose_has_run = TRUE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -305,20 +305,12 @@ nm_supplicant_interface_dispose (GObject *object)
|
|||||||
guint32 sm_state;
|
guint32 sm_state;
|
||||||
|
|
||||||
if (priv->dispose_has_run) {
|
if (priv->dispose_has_run) {
|
||||||
/* If dispose did already run, return. */
|
G_OBJECT_CLASS (nm_supplicant_interface_parent_class)->dispose (object);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure dispose does not run twice. */
|
|
||||||
priv->dispose_has_run = TRUE;
|
priv->dispose_has_run = TRUE;
|
||||||
|
|
||||||
/*
|
|
||||||
* In dispose, you are supposed to free all types referenced from this
|
|
||||||
* object which might themselves hold a reference to self. Generally,
|
|
||||||
* the most simple solution is to unref all members on which you own a
|
|
||||||
* reference.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Ask wpa_supplicant to remove this interface */
|
/* Ask wpa_supplicant to remove this interface */
|
||||||
sm_state = nm_supplicant_manager_get_state (priv->smgr);
|
sm_state = nm_supplicant_manager_get_state (priv->smgr);
|
||||||
if (sm_state == NM_SUPPLICANT_MANAGER_STATE_IDLE) {
|
if (sm_state == NM_SUPPLICANT_MANAGER_STATE_IDLE) {
|
||||||
|
@@ -141,11 +141,10 @@ nm_supplicant_manager_dispose (GObject *object)
|
|||||||
NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (object);
|
NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (object);
|
||||||
|
|
||||||
if (priv->dispose_has_run) {
|
if (priv->dispose_has_run) {
|
||||||
/* If dispose did already run, return. */
|
G_OBJECT_CLASS (nm_supplicant_manager_parent_class)->dispose (object);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure dispose does not run twice. */
|
|
||||||
priv->dispose_has_run = TRUE;
|
priv->dispose_has_run = TRUE;
|
||||||
|
|
||||||
if (priv->poke_id) {
|
if (priv->poke_id) {
|
||||||
@@ -153,12 +152,6 @@ nm_supplicant_manager_dispose (GObject *object)
|
|||||||
priv->poke_id = 0;
|
priv->poke_id = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* In dispose, you are supposed to free all types referenced from this
|
|
||||||
* object which might themselves hold a reference to self. Generally,
|
|
||||||
* the most simple solution is to unref all members on which you own a
|
|
||||||
* reference.
|
|
||||||
*/
|
|
||||||
if (priv->dbus_mgr) {
|
if (priv->dbus_mgr) {
|
||||||
g_object_unref (G_OBJECT (priv->dbus_mgr));
|
g_object_unref (G_OBJECT (priv->dbus_mgr));
|
||||||
priv->dbus_mgr = NULL;
|
priv->dbus_mgr = NULL;
|
||||||
|
Reference in New Issue
Block a user