Author: Philip Jenvey <[email protected]>
Branch: py3k
Changeset: r62881:4ce75abda07e
Date: 2013-03-29 11:07 -0700
http://bitbucket.org/pypy/pypy/changeset/4ce75abda07e/

Log:    parse time fields as c ints

diff --git a/pypy/module/rctime/interp_time.py 
b/pypy/module/rctime/interp_time.py
--- a/pypy/module/rctime/interp_time.py
+++ b/pypy/module/rctime/interp_time.py
@@ -404,24 +404,24 @@
                               "argument must be sequence of "
                               "length 9, not %d", len(tup_w))
 
-    y = space.int_w(tup_w[0])
-    tm_mon = space.int_w(tup_w[1])
+    y = space.c_int_w(tup_w[0])
+    tm_mon = space.c_int_w(tup_w[1])
     if tm_mon == 0:
         tm_mon = 1
-    tm_mday = space.int_w(tup_w[2])
+    tm_mday = space.c_int_w(tup_w[2])
     if tm_mday == 0:
         tm_mday = 1
-    tm_yday = space.int_w(tup_w[7])
+    tm_yday = space.c_int_w(tup_w[7])
     if tm_yday == 0:
         tm_yday = 1
     rffi.setintfield(glob_buf, 'c_tm_mon', tm_mon)
     rffi.setintfield(glob_buf, 'c_tm_mday', tm_mday)
-    rffi.setintfield(glob_buf, 'c_tm_hour', space.int_w(tup_w[3]))
-    rffi.setintfield(glob_buf, 'c_tm_min', space.int_w(tup_w[4]))
-    rffi.setintfield(glob_buf, 'c_tm_sec', space.int_w(tup_w[5]))
-    rffi.setintfield(glob_buf, 'c_tm_wday', space.int_w(tup_w[6]))
+    rffi.setintfield(glob_buf, 'c_tm_hour', space.c_int_w(tup_w[3]))
+    rffi.setintfield(glob_buf, 'c_tm_min', space.c_int_w(tup_w[4]))
+    rffi.setintfield(glob_buf, 'c_tm_sec', space.c_int_w(tup_w[5]))
+    rffi.setintfield(glob_buf, 'c_tm_wday', space.c_int_w(tup_w[6]))
     rffi.setintfield(glob_buf, 'c_tm_yday', tm_yday)
-    rffi.setintfield(glob_buf, 'c_tm_isdst', space.int_w(tup_w[8]))
+    rffi.setintfield(glob_buf, 'c_tm_isdst', space.c_int_w(tup_w[8]))
     if _POSIX:
         if _CYGWIN:
             pass
diff --git a/pypy/module/rctime/test/test_rctime.py 
b/pypy/module/rctime/test/test_rctime.py
--- a/pypy/module/rctime/test/test_rctime.py
+++ b/pypy/module/rctime/test/test_rctime.py
@@ -155,6 +155,11 @@
                               (0,) * 8) == 'Mon Jan  1 00:00:00 12345'
         assert rctime.asctime((123456789,) +
                               (0,) * 8) == 'Mon Jan  1 00:00:00 123456789'
+        sizeof_int = 4
+        bigyear = (1 << 8 * sizeof_int - 1) - 1
+        asc = rctime.asctime((bigyear, 6, 1) + (0,)*6)
+        assert asc[-len(str(bigyear)):] == str(bigyear)
+        raises(OverflowError, rctime.asctime, (bigyear + 1,) + (0,)*8)
 
     def test_accept2dyear_access(self):
         import time as rctime
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to