Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8861494

Browse files
committed
#11062: Fix universal newline support in Babyl._install_message()
When adding a message from a binary file, \r\n was translated to \r\r\n in the message body.
1 parent 573b1fd commit 8861494

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

Lib/mailbox.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1450,10 +1450,17 @@ def _install_message(self, message):
14501450
else:
14511451
break
14521452
while True:
1453-
buffer = message.read(4096) # Buffer size is arbitrary.
1454-
if not buffer:
1453+
line = message.readline()
1454+
if not line:
14551455
break
1456-
self._file.write(buffer.replace(b'\n', linesep))
1456+
# Universal newline support.
1457+
if line.endswith(b'\r\n'):
1458+
line = line[:-2] + linesep
1459+
elif line.endswith(b'\r'):
1460+
line = line[:-1] + linesep
1461+
elif line.endswith(b'\n'):
1462+
line = line[:-1] + linesep
1463+
self._file.write(line)
14571464
else:
14581465
raise TypeError('Invalid message type: %s' % type(message))
14591466
stop = self._file.tell()

0 commit comments

Comments
 (0)