aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gnome-cal.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/gnome-cal.c')
-rw-r--r--calendar/gnome-cal.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/calendar/gnome-cal.c b/calendar/gnome-cal.c
index 24c854ee5c..a54d4e4a78 100644
--- a/calendar/gnome-cal.c
+++ b/calendar/gnome-cal.c
@@ -335,19 +335,20 @@ static int
mark_gtk_calendar_day (iCalObject *obj, time_t start, time_t end, void *c)
{
GtkCalendar *gtk_cal = c;
- struct tm *tm_s;
+ struct tm tm_s;
int days, day;
+ time_t t, day_end;
- tm_s = localtime (&start);
- days = difftime (end, start) / (60*60*24);
-
- for (day = 0; day <= days; day++){
- time_t new = mktime (tm_s);
- struct tm *tm_day;
+ tm_s = *localtime (&start);
+ day_end = time_end_of_day (end);
+
+ for (t = start; t <= day_end; t += 60*60*24){
+ time_t new = mktime (&tm_s);
+ struct tm tm_day;
- tm_day = localtime (&new);
- gtk_calendar_mark_day (gtk_cal, tm_day->tm_mday);
- tm_s->tm_mday++;
+ tm_day = *localtime (&new);
+ gtk_calendar_mark_day (gtk_cal, tm_day.tm_mday);
+ tm_s.tm_mday++;
}
return TRUE;
}