diff options
Diffstat (limited to 'addressbook')
-rw-r--r-- | addressbook/ChangeLog | 11 | ||||
-rw-r--r-- | addressbook/backend/ebook/e-book.c | 2 | ||||
-rw-r--r-- | addressbook/gui/contact-editor/e-contact-editor.c | 5 |
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); |