Division by zero in innreport
Julien ÉLIE
julien at trigofacile.com
Sat Jan 7 00:01:55 UTC 2012
Hi Russ,
>> There is an issue in how innreport translates these dates. The
>> ConvDate() function assumes the dates are relative to the *current*
>> year. So it thinks it has been passed Dec 31th 2012 and Jan 1st 2012
>> (whereas it was Dec 31th 2010 and Jan 1st 2011). As 2012 is a leap
>> year, and Dec 31th is after Feb 28th, the translated date contains an
>> unexpected "+1 day".
>
> This bug has been around for a long time. I think it may even be in Trac
> or TODO or somewhere, since I recall trying to fix it once and then
> getting too confused by the date parsing code and giving up.
I think you refer to:
http://inn.eyrie.org/trac/ticket/90
The identified bug (counting the right number of days) was fixed but
another trickier one was introduced.
It is true that the date parsing code is confusing!
In the patch I attached to my previous mail, I make use of Time::Local
to convert dates to seconds since epoch, thus modifying the behaviour of
ConvDate() which was converting dates to seconds since January, 1st.
I bet innreport now runs slower, but I think it is better to achieve
robustness (the code using Time::Local seems easier to read and maintain).
In case you, Alexander or another reader here see improvements, do not
hesitate to tell.
I hope not to have introduced another bug.
At least, this patched version currently runs fine and generate a normal
HTML index page on my news server.
--
Julien ÉLIE
« Les ouvriers qui font la pause lentilles voient arriver un visiteur
inattendu… » (Astérix)
More information about the inn-workers
mailing list