Change 29940 by [EMAIL PROTECTED] on 2007/01/24 11:02:24

        Upgrade to Time::Local 1.16

Affected files ...

... //depot/perl/lib/Time/Local.pm#40 edit
... //depot/perl/lib/Time/Local.t#20 edit

Differences ...

==== //depot/perl/lib/Time/Local.pm#40 (text) ====
Index: perl/lib/Time/Local.pm
--- perl/lib/Time/Local.pm#39~29937~    2007-01-23 13:07:06.000000000 -0800
+++ perl/lib/Time/Local.pm      2007-01-24 03:02:24.000000000 -0800
@@ -7,7 +7,7 @@
 use integer;
 
 use vars qw( $VERSION @ISA @EXPORT @EXPORT_OK );
-$VERSION   = '1.15';
+$VERSION   = '1.16';
 
 @ISA       = qw( Exporter );
 @EXPORT    = qw( timegm timelocal );
@@ -91,9 +91,6 @@
 sub timegm {
     my ( $sec, $min, $hour, $mday, $month, $year ) = @_;
 
-    # Need to check leap year before altering the value
-    my $leap_year = _is_leap_year($year);
-
     if ( $year >= 1000 ) {
         $year -= 1900;
     }
@@ -114,7 +111,7 @@
 
        my $md = $MonthDays[$month];
         ++$md
-            if $month == 1 && $leap_year;
+            if $month == 1 && _is_leap_year( $year + 1900 );
 
         croak "Day '$mday' out of range 1..$md"  if $mday > $md or $mday < 1;
         croak "Hour '$hour' out of range 0..23"  if $hour > 23  or $hour < 0;

==== //depot/perl/lib/Time/Local.t#20 (xtext) ====
Index: perl/lib/Time/Local.t
--- perl/lib/Time/Local.t#19~29931~     2007-01-22 17:55:48.000000000 -0800
+++ perl/lib/Time/Local.t       2007-01-24 03:02:24.000000000 -0800
@@ -77,7 +77,7 @@
 $tests += @neg_time * 12;
 $tests += @bad_time;
 $tests += @years;
-$tests += 5;
+$tests += 10;
 $tests += 2 if $ENV{PERL_CORE};
 $tests += 8 if $ENV{MAINTAINER};
 
@@ -171,8 +171,25 @@
     skip 'this platform does not support negative epochs.', 1
         unless $neg_epoch_ok;
 
+    eval { timegm(0,0,0,29,1,1900) };
+    like($@, qr/Day '29' out of range 1\.\.28/,
+         'does not accept leap day in 1900');
+
+    eval { timegm(0,0,0,29,1,200) };
+    like($@, qr/Day '29' out of range 1\.\.28/,
+         'does not accept leap day in 2100 (year passed as 200)');
+
+    eval { timegm(0,0,0,29,1,0) };
+    is($@, '', 'no error with leap day of 2000 (year passed as 0)');
+
     eval { timegm(0,0,0,29,1,1904) };
     is($@, '', 'no error with leap day of 1904');
+
+    eval { timegm(0,0,0,29,1,4) };
+    is($@, '', 'no error with leap day of 2004 (year passed as 4)');
+
+    eval { timegm(0,0,0,29,1,96) };
+    is($@, '', 'no error with leap day of 1996 (year passed as 96)');
 }
 
 if ($ENV{MAINTAINER}) {
End of Patch.

Reply via email to