From a0e2a7f919a6a5eef3d40d38baaec91b852a1940 Mon Sep 17 00:00:00 2001 From: A2 Date: Fri, 6 Feb 2026 15:45:15 +0100 Subject: [PATCH] reject year 0 for Hebrew, French and Islamic calendars These calendars have no year zero. Previously, year=0 passed validation and produced incorrect conversions (e.g. Hebrew d=0,m=0,y=0 mapped to d=1,m=1,y=2). Add check_year year>0 for all three calendar kinds in make. Fixes geneweb/geneweb#160 --- lib/calendars.ml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/calendars.ml b/lib/calendars.ml index b8a0b95..8043451 100644 --- a/lib/calendars.ml +++ b/lib/calendars.ml @@ -553,12 +553,15 @@ let make : ~error:(Fun.const @@ check_greg ()) (check_year (fun () -> year < -45)) | Hebrew -> + check_year (fun () -> year > 0) >>= fun () -> check_month (fun () -> month <= 13) >>= fun () -> check_day (fun () -> day <= hebrew_nb_days_upper_bound.(month - 1)) | French -> + check_year (fun () -> year > 0) >>= fun () -> check_month (fun () -> month <= 13) >>= fun () -> check_day (fun () -> day <= 30) | Islamic -> + check_year (fun () -> year > 0) >>= fun () -> check_month (fun () -> month <= 12) >>= fun () -> check_day (fun () -> day <= 30) in