From 9bcb908ca516ac24874af94ab2a5acc9af437170 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 17 Jul 2003 16:58:02 +0000 Subject: disconnect from model signals to prevent a race condition at shutdown * gui/widgets/e-addressbook-view.c (e_addressbook_view_dispose): disconnect from model signals to prevent a race condition at shutdown where the view gets destroyed and then the model notices the backend dying before being destroyed itself. * gui/widgets/e-addressbook-reflow-adapter.c (addressbook_finalize): add, to free priv. (e_addressbook_reflow_adapter_class_init): set it up * gui/component/e-address-popup.c (e_address_popup_set_free_form): Don't leak strings * gui/component/addressbook-storage.c (load_source_data): don't leak xml data. * gui/component/addressbook-component.c (new_item_cb): don't leak the new card. svn path=/trunk/; revision=21858 --- addressbook/gui/widgets/e-addressbook-reflow-adapter.c | 9 +++++++++ addressbook/gui/widgets/e-addressbook-view.c | 4 ++++ 2 files changed, 13 insertions(+) (limited to 'addressbook/gui/widgets') diff --git a/addressbook/gui/widgets/e-addressbook-reflow-adapter.c b/addressbook/gui/widgets/e-addressbook-reflow-adapter.c index 7f99062144..7ece1aab8c 100644 --- a/addressbook/gui/widgets/e-addressbook-reflow-adapter.c +++ b/addressbook/gui/widgets/e-addressbook-reflow-adapter.c @@ -106,6 +106,14 @@ addressbook_dispose(GObject *object) unlink_model (adapter); } +static void +addressbook_finalize(GObject *object) +{ + EAddressbookReflowAdapter *adapter = E_ADDRESSBOOK_REFLOW_ADAPTER(object); + + g_free (adapter->priv); +} + static void addressbook_set_width (EReflowModel *erm, int width) { @@ -373,6 +381,7 @@ e_addressbook_reflow_adapter_class_init (GObjectClass *object_class) object_class->set_property = addressbook_set_property; object_class->get_property = addressbook_get_property; object_class->dispose = addressbook_dispose; + object_class->finalize = addressbook_finalize; g_object_class_install_property (object_class, PROP_BOOK, g_param_spec_object ("book", diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 35decd7ee2..08710c71b5 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -326,6 +326,10 @@ e_addressbook_view_dispose (GObject *object) EAddressbookView *eav = E_ADDRESSBOOK_VIEW(object); if (eav->model) { + g_signal_handlers_disconnect_matched (eav->model, + G_SIGNAL_MATCH_DATA, + 0, 0, NULL, NULL, + object); g_object_unref (eav->model); eav->model = NULL; } -- cgit v1.2.3