[evolution] Crash under e_meeting_time_selector_refresh_cb()



commit 2b9e5356d6f4000962c7d4de740dfd8d47aa101a
Author: Milan Crha <mcrha redhat com>
Date:   Wed Apr 12 14:47:20 2017 +0200

    Crash under e_meeting_time_selector_refresh_cb()
    
    The callback is called only after the free/busy information is read,
    which can take longer than the meeting time selector is shown, thus
    even if it is not fully freed, its dispose() handler is called and
    internal members are nullified, which could lead to issues and critical
    warnings, and in some cases also to crash.

 src/calendar/gui/e-meeting-time-sel.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
---
diff --git a/src/calendar/gui/e-meeting-time-sel.c b/src/calendar/gui/e-meeting-time-sel.c
index 847818f..902fe77 100644
--- a/src/calendar/gui/e-meeting-time-sel.c
+++ b/src/calendar/gui/e-meeting-time-sel.c
@@ -1425,6 +1425,12 @@ e_meeting_time_selector_refresh_cb (gpointer data)
 {
        EMeetingTimeSelector *mts = data;
 
+       if (!mts->model) {
+               /* Destroyed, do not do anything */
+               g_object_unref (mts);
+               return FALSE;
+       }
+
        if (e_meeting_store_get_num_queries (mts->model) == 0) {
                GdkCursor *cursor;
                GdkWindow *window;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]