diff options
author | Milan Crha <mcrha@redhat.com> | 2010-05-14 05:49:58 +0800 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2010-05-14 05:49:58 +0800 |
commit | 5a124a6add633ba4af8babc8de7a8a9b8058899e (patch) | |
tree | 9fd9c187c4ac640eeb10c8586c90c3b9c5ec7380 /calendar/gui/e-calendar-view.c | |
parent | b936a2301feb69f420d930f8f74436dde35b9f04 (diff) | |
download | gsoc2013-evolution-5a124a6add633ba4af8babc8de7a8a9b8058899e.tar gsoc2013-evolution-5a124a6add633ba4af8babc8de7a8a9b8058899e.tar.gz gsoc2013-evolution-5a124a6add633ba4af8babc8de7a8a9b8058899e.tar.bz2 gsoc2013-evolution-5a124a6add633ba4af8babc8de7a8a9b8058899e.tar.lz gsoc2013-evolution-5a124a6add633ba4af8babc8de7a8a9b8058899e.tar.xz gsoc2013-evolution-5a124a6add633ba4af8babc8de7a8a9b8058899e.tar.zst gsoc2013-evolution-5a124a6add633ba4af8babc8de7a8a9b8058899e.zip |
Bug #607257 - Add checks for event->comp_data != NULL
Diffstat (limited to 'calendar/gui/e-calendar-view.c')
-rw-r--r-- | calendar/gui/e-calendar-view.c | 54 |
1 files changed, 52 insertions, 2 deletions
diff --git a/calendar/gui/e-calendar-view.c b/calendar/gui/e-calendar-view.c index 48b29337d5..77d8fd2051 100644 --- a/calendar/gui/e-calendar-view.c +++ b/calendar/gui/e-calendar-view.c @@ -170,6 +170,9 @@ calendar_view_delete_event (ECalendarView *cal_view, gboolean delete = FALSE; GError *error = NULL; + if (!is_comp_data_valid (event)) + return; + comp = e_cal_component_new (); e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (event->comp_data->icalcomp)); vtype = e_cal_component_get_vtype (comp); @@ -451,6 +454,9 @@ calendar_view_cut_clipboard (ESelectable *selectable) if (!event) continue; + if (!is_comp_data_valid (event)) + continue; + comp = e_cal_component_new (); e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (event->comp_data->icalcomp)); @@ -560,7 +566,7 @@ calendar_view_copy_clipboard (ESelectable *selectable) for (l = selected; l != NULL; l = l->next) { event = (ECalendarViewEvent *) l->data; - if (event) { + if (event && is_comp_data_valid (event)) { e_cal_util_add_timezones_from_component (vcal_comp, event->comp_data->icalcomp); add_related_timezones (vcal_comp, event->comp_data->icalcomp, event->comp_data->client); @@ -570,6 +576,9 @@ calendar_view_copy_clipboard (ESelectable *selectable) for (l = selected; l != NULL; l = l->next) { event = (ECalendarViewEvent *) l->data; + if (!is_comp_data_valid (event)) + continue; + new_icalcomp = icalcomponent_new_clone (event->comp_data->icalcomp); /* remove RECURRENCE-IDs from copied objects */ @@ -1205,6 +1214,9 @@ e_calendar_view_delete_selected_occurrence (ECalendarView *cal_view) if (!selected) return; event = (ECalendarViewEvent *) selected->data; + if (!is_comp_data_valid (event)) + return; + comp = e_cal_component_new (); e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (event->comp_data->icalcomp)); vtype = e_cal_component_get_vtype (comp); @@ -1315,7 +1327,7 @@ e_calendar_view_open_event (ECalendarView *cal_view) selected = e_calendar_view_get_selected_events (cal_view); if (selected) { ECalendarViewEvent *event = (ECalendarViewEvent *) selected->data; - if (event) + if (event && is_comp_data_valid (event)) e_calendar_view_edit_appointment (cal_view, event->comp_data->client, event->comp_data->icalcomp, icalcomponent_get_first_property(event->comp_data->icalcomp, ICAL_ATTENDEE_PROPERTY) != NULL); @@ -1803,6 +1815,9 @@ e_calendar_view_get_tooltips (ECalendarViewEventData *data) default_zone = e_calendar_view_get_timezone (data->cal_view); pevent = data->get_view_event (data->cal_view, data->day, data->event_num); + if (!is_comp_data_valid (pevent)) + return FALSE; + client = pevent->comp_data->client; clone_comp = icalcomponent_new_clone (pevent->comp_data->icalcomp); @@ -2104,3 +2119,38 @@ get_today_background (const GdkColor base_background) return res; } +gboolean +is_comp_data_valid_func (ECalendarViewEvent *event, const gchar *location) +{ + g_return_val_if_fail (location != NULL, FALSE); + + if (!event) { + g_warning ("%s: event is NULL", location); + return FALSE; + } + + if (!event->comp_data) { + g_warning ("%s: event's (%p) comp_data is NULL", location, event); + return FALSE; + } + + return TRUE; +} + +gboolean +is_array_index_in_bounds_func (GArray *array, gint index, const gchar *location) +{ + g_return_val_if_fail (location != NULL, FALSE); + + if (!array) { + g_warning ("%s: array is NULL", location); + return FALSE; + } + + if (index < 0 || index >= array->len) { + g_warning ("%s: index %d is out of bounds [0,%d) at array %p", location, index, array->len, array); + return FALSE; + } + + return TRUE; +} |