From 3eb4762245dd2c8a872f0692071c4772d06bf787 Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Sun, 5 Aug 2001 11:01:43 +0000 Subject: set op->listener to NULL to catch possible use of freed op 2001-08-05 Radek Doulik * backend/ebook/e-book.c (e_book_do_response_get_view): set op->listener to NULL to catch possible use of freed op (e_book_do_response_get_changes): ditto * backend/ebook/e-book-view-listener.c (e_book_view_listener_check_queue): this callback could be (and indeed is) called from signal emited above, signal handler could call e_book_view_listener_stop, so we need to check if idle is still set and if not we don't want to unref again svn path=/trunk/; revision=11692 --- addressbook/backend/ebook/e-book-view-listener.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'addressbook/backend/ebook/e-book-view-listener.c') diff --git a/addressbook/backend/ebook/e-book-view-listener.c b/addressbook/backend/ebook/e-book-view-listener.c index 7e0f6d5c29..761cf12281 100644 --- a/addressbook/backend/ebook/e-book-view-listener.c +++ b/addressbook/backend/ebook/e-book-view-listener.c @@ -47,7 +47,10 @@ e_book_view_listener_check_queue (EBookViewListener *listener) e_book_view_listener_signals [RESPONSES_QUEUED]); } - if (listener->priv->response_queue == NULL) { + /* this callback could be (and indeed is) called from signal emited above, + signal handler could call e_book_view_listener_stop, so we need to check + if idle is still set and if not we don't want to unref again */ + if (listener->priv->response_queue == NULL && listener->priv->idle_id != 0) { listener->priv->idle_id = 0; bonobo_object_unref (BONOBO_OBJECT (listener)); return FALSE; -- cgit v1.2.3