Calendar.now()->day()->end()-Calendar.Second() fails
Imported from http://bugzilla.roxen.com/bugzilla/show_bug.cgi?id=3210
Reported by Dan Nelson dnelson_1901@yahoo.com
I'm trying to get the last second for today. The above expression worked in pike 7.3.39, and fails in 7.3.45. The most likely culprit is YMD.pmod; it went from r1.41 to r1.45 between that time, and according to the changelogs, the Day type was modified.
Sample code:
import Calendar;
int main()
{
Stdio.stdout->write("%O\n",now()->day()->end()-Second());
}
not in range (Day 1..0 exist)
/usr/local/pike/7.3.51/lib/modules/Calendar.pmod/YMD.pmod:765:
Day(Sat 24 Aug 2002 0:00 sharp)->day()
/usr/local/pike/7.3.51/lib/modules/Calendar.pmod/YMD.pmod:863:
Day(Sat 24 Aug 2002 0:00 sharp)->get_unit("second",0)
/usr/local/pike/7.3.51/lib/modules/Calendar.pmod/YMD.pmod:620:
Day(Sat 24 Aug 2002 0:00 sharp)->_add(-1,Second(Fri 23 Aug 2002
13:40:39 CDT))
/usr/local/pike/7.3.51/lib/modules/Calendar.pmod/TimeRanges.pmod:220:
Day(Sat 24 Aug 2002 0:00 sharp)->add(-1,Second(Fri 23 Aug 2002 13:40:39
CDT))
/usr/local/pike/7.3.51/lib/modules/Calendar.pmod/TimeRanges.pmod:286:
Day(Sat 24 Aug 2002 0:00 sharp)->`-(Second(Fri 23 Aug 2002 13:40:39 CDT))
a.pike:5: main()