pickle.py, load_int(): Match cPickle's just-repaired ability to unpickle
64-bit INTs on 32-bit boxes (where they become longs). Also exploit that
int(str) and long(str) will ignore a trailing newline (saves creating a
new string at the Python level).
pickletester.py: Simulate reading a pickle produced by a 64-bit box.
diff --git a/Lib/pickle.py b/Lib/pickle.py
index 8be7a8d..d5773e2 100644
--- a/Lib/pickle.py
+++ b/Lib/pickle.py
@@ -615,7 +615,11 @@
dispatch[NONE] = load_none
def load_int(self):
- self.append(int(self.readline()[:-1]))
+ data = self.readline()
+ try:
+ self.append(int(data))
+ except ValueError:
+ self.append(long(data))
dispatch[INT] = load_int
def load_binint(self):