aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addressbook/ChangeLog11
-rw-r--r--addressbook/backend/ebook/e-book.c2
-rw-r--r--addressbook/gui/contact-editor/e-contact-editor.c5
3 files changed, 18 insertions, 0 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index c67db48937..a5945c9e3c 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,14 @@
+2002-10-19 Chris Toshok <toshok@ximian.com>
+
+ [ probable fix for #25477, and memory leak fix ]
+ * gui/contact-editor/e-contact-editor.c (supported_fields_cb): if
+ the dialog isn't in the list of all dialogs it's been destroyed so
+ just return here.
+
+ * backend/ebook/e-book.c
+ (e_book_do_response_get_supported_fields): plug leak of
+ resp->fields.
+
2002-10-15 Dan Winship <danw@ximian.com>
* backend/ebook/e-card.c (e_card_email_match_string): Return right
diff --git a/addressbook/backend/ebook/e-book.c b/addressbook/backend/ebook/e-book.c
index cad203ad44..d211496261 100644
--- a/addressbook/backend/ebook/e-book.c
+++ b/addressbook/backend/ebook/e-book.c
@@ -483,6 +483,8 @@ e_book_do_response_get_supported_fields (EBook *book,
((EBookFieldsCallback) op->cb) (book, E_BOOK_STATUS_CANCELLED, NULL, op->closure);
}
+ gtk_object_unref(GTK_OBJECT(resp->fields));
+
e_book_op_free (op);
}
diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c
index f22aaa5487..fa30ec871e 100644
--- a/addressbook/gui/contact-editor/e-contact-editor.c
+++ b/addressbook/gui/contact-editor/e-contact-editor.c
@@ -1489,6 +1489,11 @@ static void
supported_fields_cb (EBook *book, EBookStatus status,
EList *fields, EContactEditor *ce)
{
+ if (!g_slist_find (all_contact_editors, ce)) {
+ g_warning ("supported_fields_cb called for book that's still around, but contact editor that's been destroyed.");
+ return;
+ }
+
gtk_object_set (GTK_OBJECT (ce),
"writable_fields", fields,
NULL);