Fix ENCODE-TIME to correctly handle negative time zones.
authorTaylor R Campbell <campbell@mumble.net>
Mon, 14 Feb 2011 17:39:45 +0000 (17:39 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Mon, 14 Feb 2011 17:39:45 +0000 (17:39 +0000)
This bug has been lying here for fifteen years.  Obviously we need
more MIT Scheme hackers in the western hemisphere...

All this time and date code desperately needs a lot of automatic
tests, too.

src/microcode/prosenv.c

index 72f9a1304fa7b0b5e2167fb5412a8ae894307a42..5de256ec889266e43248fb1ee6234860677ba482 100644 (file)
@@ -116,8 +116,8 @@ DEFINE_PRIMITIVE ("ENCODE-TIME", Prim_encode_time, 1, 1,
   (ts . time_zone)
     = (((len > 9)
        && (INTEGER_P (VECTOR_REF (vec, 9)))
-       && (integer_to_ulong_p (VECTOR_REF (vec, 9))))
-       ? (integer_to_ulong (VECTOR_REF (vec, 9)))
+       && (integer_to_long_p (VECTOR_REF (vec, 9))))
+       ? (integer_to_long (VECTOR_REF (vec, 9)))
        : INT_MAX);
   PRIMITIVE_RETURN (intmax_to_integer (OS_encode_time (&ts)));
 }