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>
|
||||
|
||||
* src/nm-device-802-11-wireless.c
|
||||
|
@@ -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);
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
|
||||
/*
|
||||
|
@@ -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) {
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user