diff Python/marshal.c @ 78305:461e84fc8c60

Issue #15466: Stop using TYPE_INT64 in marshal, to make importlib.h (and other byte code files) equal between 32-bit and 64-bit systems.
author Martin v. Löwis <martin@v.loewis.de>
date Sat, 28 Jul 2012 19:44:05 +0200
parents e67b3a9bd2dc
children b48e1cd2d3be
line wrap: on
line diff
--- a/Python/marshal.c	Sat Jul 28 17:45:28 2012 +0100
+++ b/Python/marshal.c	Sat Jul 28 19:44:05 2012 +0200
@@ -31,6 +31,9 @@
 #define TYPE_STOPITER           'S'
 #define TYPE_ELLIPSIS           '.'
 #define TYPE_INT                'i'
+/* TYPE_INT64 is deprecated. It is not
+   generated anymore, and support for reading it
+   will be removed in Python 3.4. */
 #define TYPE_INT64              'I'
 #define TYPE_FLOAT              'f'
 #define TYPE_BINARY_FLOAT       'g'
@@ -121,15 +124,6 @@
     w_byte((char)((x>>24) & 0xff), p);
 }
 
-#if SIZEOF_LONG > 4
-static void
-w_long64(long x, WFILE *p)
-{
-    w_long(x, p);
-    w_long(x>>32, p);
-}
-#endif
-
 /* We assume that Python longs are stored internally in base some power of
    2**15; for the sake of portability we'll always read and write them in base
    exactly 2**15. */
@@ -219,8 +213,8 @@
 #if SIZEOF_LONG > 4
             long y = Py_ARITHMETIC_RIGHT_SHIFT(long, x, 31);
             if (y && y != -1) {
-                w_byte(TYPE_INT64, p);
-                w_long64(x, p);
+                /* Too large for TYPE_INT */
+                w_PyLong((PyLongObject*)v, p);
             }
             else
 #endif