Fix crashes when e_cal_util_get_system_timezone() returns NULL

The return value is nullable, but gnome-calendar fails to check it.

Because the nullable return value is inconvenient for us, we can instead
add and use gcal_context_get_icaltimezone() to supplement the existing
gcal_context_get_timezone().

We'll also need a function to convert from GTimeZone to ICalTimezone,
gcal_timezone_to_icaltimezone().

Fixes #419
This commit is contained in:
Michael Catanzaro
2019-09-19 16:01:44 -05:00
parent d0d4166d23
commit 8e6a3b9f3f
6 changed files with 94 additions and 18 deletions
+3 -1
View File
@@ -177,14 +177,16 @@ gcal_search_engine_constructed (GObject *object)
{
GcalSearchEngine *self = (GcalSearchEngine *)object;
GcalManager *manager;
GTimeZone *zone;
G_OBJECT_CLASS (gcal_search_engine_parent_class)->constructed (object);
/* Setup the data model */
self->data_model = e_cal_data_model_new (gcal_thread_submit_job);
e_cal_data_model_set_expand_recurrences (self->data_model, TRUE);
e_cal_data_model_set_timezone (self->data_model, e_cal_util_get_system_timezone ());
zone = gcal_context_get_timezone (self->context);
e_cal_data_model_set_timezone (self->data_model, gcal_timezone_to_icaltimezone (zone));
manager = gcal_context_get_manager (self->context);
g_signal_connect_object (manager, "calendar-added", G_CALLBACK (on_manager_calendar_added_cb), self, 0);