aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Winship <danw@src.gnome.org>2001-07-25 02:13:14 +0800
committerDan Winship <danw@src.gnome.org>2001-07-25 02:13:14 +0800
commit0a9ba272a22ed1a8d4521321a7f8fc95042e6253 (patch)
treea677844bce80691b3199d06733110388584b651b
parent2a50df3b9536ea58ab270def25b025aff12828bc (diff)
downloadgsoc2013-evolution-0a9ba272a22ed1a8d4521321a7f8fc95042e6253.tar.gz
gsoc2013-evolution-0a9ba272a22ed1a8d4521321a7f8fc95042e6253.tar.zst
gsoc2013-evolution-0a9ba272a22ed1a8d4521321a7f8fc95042e6253.zip
Don't stop the idle_queue and unref from here, since this might be called
* backend/ebook/e-book-listener.c (e_book_listener_stop): Don't stop the idle_queue and unref from here, since this might be called from inside e_book_listener_check_queue, and we don't want to return to that function with the listener having been destroyed. (e_book_listener_check_queue): Don't exit early if the queue is stopped. Proceed through the check if the queue is NULL (which is must be if the queue is stopped), and then reach the existing code to remove the idle handler. Combined with the above, this fixes ximian #4485 (again). This is not a plot to boost my showstopper-bugfixing count by fixing the same bug over and over again. svn path=/trunk/; revision=11346
-rw-r--r--addressbook/ChangeLog15
-rw-r--r--addressbook/backend/ebook/e-book-listener.c11
2 files changed, 15 insertions, 11 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index 9d3bed3211..04ae3a90f1 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,18 @@
+2001-07-24 Dan Winship <danw@ximian.com>
+
+ * backend/ebook/e-book-listener.c (e_book_listener_stop): Don't
+ stop the idle_queue and unref from here, since this might be
+ called from inside e_book_listener_check_queue, and we don't want
+ to return to that function with the listener having been
+ destroyed.
+ (e_book_listener_check_queue): Don't exit early if the queue is
+ stopped. Proceed through the check if the queue is NULL (which is
+ must be if the queue is stopped), and then reach the existing code
+ to remove the idle handler. Combined with the above, this fixes
+ ximian #4485 (again). This is not a plot to boost my
+ showstopper-bugfixing count by fixing the same bug over and over
+ again.
+
2001-07-23 Dan Winship <danw@ximian.com>
Re-fix for my 07-18 not-quite-fix.
diff --git a/addressbook/backend/ebook/e-book-listener.c b/addressbook/backend/ebook/e-book-listener.c
index 87ea5f874f..285c6646b2 100644
--- a/addressbook/backend/ebook/e-book-listener.c
+++ b/addressbook/backend/ebook/e-book-listener.c
@@ -35,11 +35,6 @@ struct _EBookListenerPrivate {
static gboolean
e_book_listener_check_queue (EBookListener *listener)
{
- if (listener->priv->stopped) {
- listener->priv->idle_id = 0;
- return FALSE;
- }
-
if (listener->priv->response_queue != NULL) {
gtk_signal_emit (GTK_OBJECT (listener),
e_book_listener_signals [RESPONSES_QUEUED]);
@@ -678,12 +673,6 @@ e_book_listener_stop (EBookListener *listener)
g_list_free (listener->priv->response_queue);
listener->priv->response_queue = NULL;
- if (listener->priv->idle_id) {
- g_source_remove (listener->priv->idle_id);
- listener->priv->idle_id = 0;
- bonobo_object_unref (BONOBO_OBJECT (listener));
- }
-
listener->priv->stopped = TRUE;
}