Fix an off-by-2 error in the leap year calculation. (#344905, Dan Winship)
authorMatthias Clasen <mclasen@redhat.com>
Tue, 20 Jun 2006 16:37:43 +0000 (16:37 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Tue, 20 Jun 2006 16:37:43 +0000 (16:37 +0000)
2006-06-20  Matthias Clasen  <mclasen@redhat.com>

* glib/gtimer.c (mktime_utc): Fix an off-by-2 error
in the leap year calculation.  (#344905, Dan Winship)

* tests/testglib.c (main): Change the test data for
the g_time_val_from_iso8601 tests to expose an off-by-2
error in the leap year calculation.

ChangeLog
ChangeLog.pre-2-12
glib/gtimer.c
tests/testglib.c

index 8db738e..28c164a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2006-06-20  Matthias Clasen  <mclasen@redhat.com>
 
+       * glib/gtimer.c (mktime_utc): Fix an off-by-2 error
+       in the leap year calculation.  (#344905, Dan Winship)
+
+       * tests/testglib.c (main): Change the test data for
+       the g_time_val_from_iso8601 tests to expose an off-by-2
+       error in the leap year calculation.
+
        * configure.in: Bump version
 
        * === Released 2.11.4 ===
index 8db738e..28c164a 100644 (file)
@@ -1,5 +1,12 @@
 2006-06-20  Matthias Clasen  <mclasen@redhat.com>
 
+       * glib/gtimer.c (mktime_utc): Fix an off-by-2 error
+       in the leap year calculation.  (#344905, Dan Winship)
+
+       * tests/testglib.c (main): Change the test data for
+       the g_time_val_from_iso8601 tests to expose an off-by-2
+       error in the leap year calculation.
+
        * configure.in: Bump version
 
        * === Released 2.11.4 ===
index 402bee5..69b4957 100644 (file)
@@ -333,7 +333,7 @@ mktime_utc (struct tm *tm)
   retval += (tm->tm_year - 68) / 4;
   retval += days_before[tm->tm_mon] + tm->tm_mday - 1;
   
-  if (tm->tm_year % 4 == 2 && tm->tm_mon < 2)
+  if (tm->tm_year % 4 == 0 && tm->tm_mon < 2)
     retval -= 1;
   
   retval = ((((retval * 24) + tm->tm_hour) * 60) + tm->tm_min) * 60 + tm->tm_sec;
index 0aadec7..0a84665 100644 (file)
@@ -1178,10 +1178,10 @@ main (int   argc,
   g_timer_destroy(timer);
   g_timer_destroy(timer2);
 
-#define REF_SEC_UTC  343737360
-#define REF_STR_UTC  "1980-11-22T10:36:00Z"
-#define REF_STR_CEST "1980-11-22T12:36:00+02:00"
-#define REF_STR_EST  "1980-11-22T05:36:00-05:00"
+#define REF_SEC_UTC  320063760
+#define REF_STR_UTC  "1980-02-22T10:36:00Z"
+#define REF_STR_CEST "1980-02-22T12:36:00+02:00"
+#define REF_STR_EST  "1980-02-22T05:36:00-05:00"
 
   g_print ("checking g_time_val_from_iso8601...\n");
   ref_date.tv_sec = REF_SEC_UTC;