diff -r 4d3066d4a5df Lib/pickle.py --- a/Lib/pickle.py Sat Dec 20 20:58:28 2014 +0200 +++ b/Lib/pickle.py Sun Dec 21 10:44:08 2014 +0200 @@ -242,7 +242,7 @@ class _Unframer: if not data: self.current_frame = None return self.file_readline() - if data[-1] != b'\n': + if data[-1] != b'\n'[0]: raise UnpicklingError( "pickle exhausted before end of frame") return data diff -r 4d3066d4a5df Lib/test/pickletester.py --- a/Lib/test/pickletester.py Sat Dec 20 20:58:28 2014 +0200 +++ b/Lib/test/pickletester.py Sun Dec 21 10:44:08 2014 +0200 @@ -1584,6 +1584,14 @@ class AbstractPickleTests(unittest.TestC count_opcode(pickle.FRAME, pickled)) self.assertEqual(obj, self.loads(some_frames_pickle)) + def test_frame_readline(self): + pickled = b'\x80\x04\x95\x05\x00\x00\x00\x00\x00\x00\x00I42\n.' + # 0: \x80 PROTO 4 + # 2: \x95 FRAME 5 + # 11: I INT 42 + # 15: . STOP + self.assertEqual(self.loads(pickled), 42) + def test_nested_names(self): global Nested class Nested: