aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calendar/ChangeLog10
-rw-r--r--calendar/gui/alarm-notify/alarm-queue.c20
2 files changed, 23 insertions, 7 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index 330373f4ed..0d6d9db31d 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,3 +1,13 @@
+2002-10-07 Rodrigo Moya <rodrigo@ximian.com>
+
+ Fixes crash in #19159
+
+ * gui/alarm-notify/alarm-queue.c (lookup_queued_alarm): don't crash if
+ we don't find the queued alarm in the internal list.
+ (alarm_trigger_cb, create_snooze, display_notification,
+ audio_notification, procedure_notification, remove_queued_alarm):
+ check return value from lookup_queued_alarm.
+
2002-10-04 Rodrigo Moya <rodrigo@ximian.com>
Fixes #15892
diff --git a/calendar/gui/alarm-notify/alarm-queue.c b/calendar/gui/alarm-notify/alarm-queue.c
index faa0475cf4..6782c91a2d 100644
--- a/calendar/gui/alarm-notify/alarm-queue.c
+++ b/calendar/gui/alarm-notify/alarm-queue.c
@@ -182,11 +182,11 @@ lookup_queued_alarm (CompQueuedAlarms *cqa, gpointer alarm_id)
for (l = cqa->queued_alarms; l; l = l->next) {
qa = l->data;
if (qa->alarm_id == alarm_id)
- break;
+ return qa;
}
- g_assert (l != NULL);
- return qa;
+ /* not found, might have been updated/removed */
+ return NULL;
}
/* Removes an alarm from the list of alarms of a component. If the alarm was
@@ -207,7 +207,8 @@ remove_queued_alarm (CompQueuedAlarms *cqa, gpointer alarm_id)
break;
}
- g_assert (l != NULL);
+ if (!l)
+ return;
cqa->queued_alarms = g_slist_remove_link (cqa->queued_alarms, l);
g_slist_free_1 (l);
@@ -247,6 +248,8 @@ alarm_trigger_cb (gpointer alarm_id, time_t trigger, gpointer data)
save_notification_time (trigger);
qa = lookup_queued_alarm (cqa, alarm_id);
+ if (!qa)
+ return;
/* Decide what to do based on the alarm action. We use the trigger that
* is passed to us instead of the one from the instance structure
@@ -642,7 +645,8 @@ display_notification (time_t trigger, CompQueuedAlarms *cqa,
comp = cqa->alarms->comp;
qa = lookup_queued_alarm (cqa, alarm_id);
- g_assert (qa != NULL);
+ if (!qa)
+ return;
vtype = cal_component_get_vtype (comp);
@@ -699,7 +703,8 @@ audio_notification (time_t trigger, CompQueuedAlarms *cqa,
comp = cqa->alarms->comp;
qa = lookup_queued_alarm (cqa, alarm_id);
- g_assert (qa != NULL);
+ if (!qa)
+ return;
alarm = cal_component_get_alarm (comp, qa->instance->auid);
g_assert (alarm != NULL);
@@ -798,7 +803,8 @@ procedure_notification (time_t trigger, CompQueuedAlarms *cqa, gpointer alarm_id
comp = cqa->alarms->comp;
qa = lookup_queued_alarm (cqa, alarm_id);
- g_assert (qa != NULL);
+ if (!qa)
+ return;
alarm = cal_component_get_alarm (comp, qa->instance->auid);
g_assert (alarm != NULL);