diff --git a/lib/modules/Calendar.pmod/Gregorian.pmod b/lib/modules/Calendar.pmod/Gregorian.pmod index 4be7166914ebdd7bc5839b423a827449a67365f7..2bb43ae2ea4cdb3daf262e61419c9d1ef5dec3e8 100644 --- a/lib/modules/Calendar.pmod/Gregorian.pmod +++ b/lib/modules/Calendar.pmod/Gregorian.pmod @@ -201,8 +201,11 @@ class Year if (!month_mapping) { month_mapping= - mkmapping(Array.map(month_names,lower_case), - indices(allocate(13))[1..]); + mkmapping(Array.map(month_names, lower_case)+ + Array.map(month_names, + lambda(string s) + { return lower_case(s[0..2]); } ), + (indices(allocate(13))[1..]) * 2); } n=month_mapping[lower_case(n)]; if (!n) return 0; @@ -1457,7 +1460,11 @@ object parse(string fmt,string arg) object low=m->year; if (m->M) + { m->month=low=m->year->month(m->M); + if(!m->month) + return 0; // Unknown month + } if (m->W) m->week=low=m->year->week(m->W);