week-header: Remove internal weather service

self->weather_service was only partially removed in 01fdf79e6a,
leading to a guaranteed crash when the weather is updated because
self->weather_service is now always NULL.

Fixes #397
This commit is contained in:
Michael Catanzaro
2019-07-09 21:14:23 -03:00
parent 6e61bb6a2e
commit 3ed9669c6e
+5 -8
View File
@@ -95,7 +95,6 @@ struct _GcalWeekHeader
gint selection_end; gint selection_end;
gint dnd_cell; gint dnd_cell;
GcalWeatherService *weather_service; /* unowned, nullable */
/* Array of nullable weather infos for each day, starting with Sunday. */ /* Array of nullable weather infos for each day, starting with Sunday. */
WeatherInfoDay weather_infos[7]; WeatherInfoDay weather_infos[7];
@@ -195,16 +194,17 @@ clear_weather_infos (GcalWeekHeader *self)
static void static void
update_weather_infos (GcalWeekHeader *self) update_weather_infos (GcalWeekHeader *self)
{ {
GPtrArray* weather_infos; GPtrArray *weather_infos;
GcalWeatherService *service;
g_return_if_fail (GCAL_IS_WEEK_HEADER (self)); g_return_if_fail (GCAL_IS_WEEK_HEADER (self));
clear_weather_infos (self); clear_weather_infos (self);
if (!self->weather_service) g_assert (self->context);
return; service = gcal_context_get_weather_service (self->context);
weather_infos = gcal_weather_service_get_weather_infos (self->weather_service); weather_infos = gcal_weather_service_get_weather_infos (service);
add_weather_infos (self, weather_infos); add_weather_infos (self, weather_infos);
} }
@@ -353,7 +353,6 @@ on_weather_update (GcalWeatherService *weather_service,
{ {
g_assert (GCAL_IS_WEATHER_SERVICE (weather_service)); g_assert (GCAL_IS_WEATHER_SERVICE (weather_service));
g_assert (GCAL_IS_WEEK_HEADER (self)); g_assert (GCAL_IS_WEEK_HEADER (self));
g_assert (self->weather_service == weather_service);
update_weather_infos (self); update_weather_infos (self);
} }
@@ -1162,8 +1161,6 @@ gcal_week_header_finalize (GObject *object)
for (i = 0; i < 7; i++) for (i = 0; i < 7; i++)
g_list_free (self->events[i]); g_list_free (self->events[i]);
g_clear_object (&self->weather_service);
for (i = 0; i < G_N_ELEMENTS (self->weather_infos); i++) for (i = 0; i < G_N_ELEMENTS (self->weather_infos); i++)
wid_clear (&self->weather_infos[i]); wid_clear (&self->weather_infos[i]);
} }