diff Python/import.c @ 74597:cb13d8cff050

Issue #11235: Fix OverflowError when trying to import a source file whose modification time doesn't fit in a 32-bit timestamp.
author Antoine Pitrou <solipsis@pitrou.net>
date Tue, 24 Jan 2012 17:45:50 +0100
parents 3fee4f07aeab a2f3d6986bfa
children 2b62348a1c03
line wrap: on
line diff
--- a/Python/import.c	Tue Jan 24 09:07:15 2012 -0500
+++ b/Python/import.c	Tue Jan 24 17:45:50 2012 +0100
@@ -1478,14 +1478,11 @@
     }
 #if SIZEOF_TIME_T > 4
     /* Python's .pyc timestamp handling presumes that the timestamp fits
-       in 4 bytes. This will be fine until sometime in the year 2038,
-       when a 4-byte signed time_t will overflow.
+       in 4 bytes. Since the code only does an equality comparison,
+       ordering is not important and we can safely ignore the higher bits
+       (collisions are extremely unlikely).
      */
-    if (st.st_mtime >> 32) {
-        PyErr_SetString(PyExc_OverflowError,
-            "modification time overflows a 4 byte field");
-        goto error;
-    }
+    st.st_mtime &= 0xFFFFFFFF;
 #endif
     if (PyUnicode_READY(pathname) < 0)
         return NULL;