From 07f544b78d3c6c2808bdb9bbcf9d3927630033eb Mon Sep 17 00:00:00 2001 From: Evangelos Ribeiro Tzaras Date: Sun, 7 Jun 2020 14:55:34 +0200 Subject: [PATCH] gcal-date-time-utils: Fix week start In locales where the first weekday is a monday, the previous code had a off by one error determining the week a sunday is in. The problem ultimately arose because in the `gcal_date_time_get_start_of_week()` function the variable `n_days_after_week_start` would become negative (-1 in this case) making the following `g_date_time_add_days (date, -n_days_after_week_start)` add 1 day resulting in `start_of_week` being set to the start of the following week. The solution was to make sure `n_days_after_week_start` would be positive by adding 7 to it. The variable is taken modulo 7 hence this should not introduce any bugs. Fixes #583 --- src/utils/gcal-date-time-utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/gcal-date-time-utils.c b/src/utils/gcal-date-time-utils.c index 733e4109..658bf6fd 100644 --- a/src/utils/gcal-date-time-utils.c +++ b/src/utils/gcal-date-time-utils.c @@ -84,7 +84,7 @@ gcal_date_time_get_start_of_week (GDateTime *date) first_weekday = get_first_weekday (); weekday = g_date_time_get_day_of_week (date) % 7; - n_days_after_week_start = (weekday - first_weekday) % 7; + n_days_after_week_start = (7 + weekday - first_weekday) % 7; start_of_week = g_date_time_add_days (date, -n_days_after_week_start);