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:
Dan Williams
2007-12-07 15:32:45 +00:00
parent b91db8d429
commit eda2d662cd
17 changed files with 52 additions and 36 deletions

View File

@@ -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>
* src/nm-device-802-11-wireless.c

View File

@@ -316,8 +316,11 @@ dispose (GObject *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;
}
priv->disposed = TRUE;
g_object_unref (priv->ap_proxy);

View File

@@ -166,6 +166,8 @@ finalize (GObject *object)
g_object_unref (priv->client_proxy);
g_object_unref (priv->bus_proxy);
g_hash_table_destroy (priv->devices);
G_OBJECT_CLASS (nm_client_parent_class)->finalize (object);
}
static void

View File

@@ -489,8 +489,10 @@ dispose (GObject *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;
}
priv->disposed = TRUE;

View File

@@ -50,8 +50,10 @@ dispose (GObject *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;
}
priv->disposed = TRUE;

View File

@@ -93,8 +93,10 @@ dispose (GObject *object)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (object);
if (priv->disposed)
if (priv->disposed) {
G_OBJECT_CLASS (nm_device_parent_class)->dispose (object);
return;
}
priv->disposed = TRUE;

View File

@@ -64,8 +64,10 @@ dispose (GObject *object)
{
NMObjectPrivate *priv = NM_OBJECT_GET_PRIVATE (object);
if (priv->disposed)
if (priv->disposed) {
G_OBJECT_CLASS (nm_object_parent_class)->dispose (object);
return;
}
priv->disposed = TRUE;

View File

@@ -45,8 +45,10 @@ dispose (GObject *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;
}
priv->disposed = TRUE;

View File

@@ -204,6 +204,7 @@ finalize (GObject *object)
g_free (priv->banner);
g_object_unref (priv->proxy);
G_OBJECT_CLASS (nm_vpn_connection_parent_class)->finalize (object);
}
static void

View File

@@ -120,6 +120,7 @@ static void
finalize (GObject *object)
{
g_object_unref (NM_VPN_MANAGER_GET_PRIVATE (object)->manager_proxy);
G_OBJECT_CLASS (nm_vpn_manager_parent_class)->finalize (object);
}
static void

View File

@@ -565,8 +565,10 @@ dispose (GObject *object)
NMVPNServiceState state;
GError *err = NULL;
if (priv->disposed)
if (priv->disposed) {
G_OBJECT_CLASS (nm_vpn_plugin_parent_class)->dispose (object);
return;
}
priv->disposed = TRUE;

View File

@@ -776,12 +776,17 @@ nm_named_manager_dispose (GObject *object)
NMNamedManager *mgr = NM_NAMED_MANAGER (object);
GSList *elt;
if (mgr->priv->disposed)
if (mgr->priv->disposed) {
G_OBJECT_CLASS (nm_named_manager_parent_class)->dispose (object);
return;
}
mgr->priv->disposed = TRUE;
for (elt = mgr->priv->configs; elt; elt = g_slist_next (elt))
remove_ip4_config_from_named (mgr, (NMIP4Config *)(elt->data));
G_OBJECT_CLASS (nm_named_manager_parent_class)->dispose (object);
}
static void

View File

@@ -2862,9 +2862,10 @@ nm_device_802_11_wireless_dispose (GObject *object)
NMDevice80211Wireless *self = NM_DEVICE_802_11_WIRELESS (object);
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;
}
priv->dispose_has_run = TRUE;

View File

@@ -395,6 +395,13 @@ nm_device_802_3_ethernet_dispose (GObject *object)
NMDevice8023EthernetPrivate *priv = NM_DEVICE_802_3_ETHERNET_GET_PRIVATE (object);
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 ();
if (priv->link_connected_id) {
g_signal_handler_disconnect (monitor, priv->link_connected_id);

View File

@@ -1543,17 +1543,9 @@ nm_device_dispose (GObject *object)
{
NMDevice *self = NM_DEVICE (object);
if (self->priv->dispose_has_run) {
/* If dispose already ran, return. */
return;
}
if (!self->priv->initialized) {
/* Don't tear down stuff that might not yet be set up */
if (self->priv->dispose_has_run || !self->priv->initialized)
goto out;
}
/* Make sure dispose does not run twice. */
self->priv->dispose_has_run = TRUE;
/*

View File

@@ -305,20 +305,12 @@ nm_supplicant_interface_dispose (GObject *object)
guint32 sm_state;
if (priv->dispose_has_run) {
/* If dispose did already run, return. */
G_OBJECT_CLASS (nm_supplicant_interface_parent_class)->dispose (object);
return;
}
/* Make sure dispose does not run twice. */
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 */
sm_state = nm_supplicant_manager_get_state (priv->smgr);
if (sm_state == NM_SUPPLICANT_MANAGER_STATE_IDLE) {

View File

@@ -141,11 +141,10 @@ nm_supplicant_manager_dispose (GObject *object)
NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (object);
if (priv->dispose_has_run) {
/* If dispose did already run, return. */
G_OBJECT_CLASS (nm_supplicant_manager_parent_class)->dispose (object);
return;
}
/* Make sure dispose does not run twice. */
priv->dispose_has_run = TRUE;
if (priv->poke_id) {
@@ -153,12 +152,6 @@ nm_supplicant_manager_dispose (GObject *object)
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) {
g_object_unref (G_OBJECT (priv->dbus_mgr));
priv->dbus_mgr = NULL;