Package: mencal
Version: 2.3-7
Severity: normal
Tags: patch

mencal does not account for daylight savings time when calculating the
variable '$day' in the markdays() subroutine, resulting in fractional
values for '$day', which breaks mencal if the start date and current
date are in different daylight savings time states.

This may actually be due to changed behaviour in POSIX::mktime back in
2007, where mktime now sets isdst=-1 by default, instead of setting
isdst=0 by default.

The included patch fixes this problem simply by ensuring that '$day' is
an integer. 

-- System Information:
Debian Release: lenny/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: i386 (i686)

Kernel: Linux 2.6.24-1-686 (SMP w/2 CPU cores)
Locale: LANG=C, LC_CTYPE=en_CA.iso8859-1 (charmap=ISO-8859-1)
Shell: /bin/sh linked to /bin/bash

Versions of packages mencal depends on:
ii  perl                          5.10.0-11  Larry Wall's Practical Extraction 

mencal recommends no packages.

-- no debconf information
--- /usr/bin/mencal     2006-07-29 17:57:14.000000000 -0600
+++ mencal      2008-07-03 15:26:01.000000000 -0600
@@ -184,7 +184,7 @@
 
   sub markdays {
     my ($self, $begin, $end, $date, $length) = (shift, shift, shift, shift, 
shift);
-    my $day = ($date - $begin) / (24 * 3600) + 1;
+    my $day = int(($date - $begin) / (24 * 3600) + 1);
     my $limit = $date + $length;
     $limit = $end if ($end < $limit);
     while ($date < $limit) {

Reply via email to