summaryrefslogtreecommitdiff
path: root/Lib/pickle.py
diff options
context:
space:
mode:
authorVinay Sajip <vinay_sajip@yahoo.co.uk>2017-02-02 19:17:51 +0000
committerVinay Sajip <vinay_sajip@yahoo.co.uk>2017-02-02 19:17:51 +0000
commitb8cf82474245d48753ae34b76a272d5120895add (patch)
tree8bec37e99a342ac40fc8a0619897feaad7615061 /Lib/pickle.py
parent474ecf16ed434144efc0e1de383efda76f011e3f (diff)
parent14593e19e199dd34f268b35987ddb288bf022039 (diff)
downloadcpython-b8cf82474245d48753ae34b76a272d5120895add.tar.gz
Closes #24875: Merged fix from 3.6.
Diffstat (limited to 'Lib/pickle.py')
-rw-r--r--Lib/pickle.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/Lib/pickle.py b/Lib/pickle.py
index c8370c9f7e..702b0b35ce 100644
--- a/Lib/pickle.py
+++ b/Lib/pickle.py
@@ -1464,12 +1464,19 @@ class _Unpickler:
def load_appends(self):
items = self.pop_mark()
list_obj = self.stack[-1]
- if isinstance(list_obj, list):
- list_obj.extend(items)
+ try:
+ extend = list_obj.extend
+ except AttributeError:
+ pass
else:
- append = list_obj.append
- for item in items:
- append(item)
+ extend(items)
+ return
+ # Even if the PEP 307 requires extend() and append() methods,
+ # fall back on append() if the object has no extend() method
+ # for backward compatibility.
+ append = list_obj.append
+ for item in items:
+ append(item)
dispatch[APPENDS[0]] = load_appends
def load_setitem(self):