Closes #23247: Fix a crash in the StreamWriter.reset() of CJK codecs

This commit is contained in:
Victor Stinner 2015-07-16 22:17:31 +02:00
parent b37f43f94b
commit 579db160b3
3 changed files with 12 additions and 0 deletions

View File

@ -270,6 +270,13 @@ class TestBase:
self.assertEqual(ostream.getvalue(), self.tstring[0])
def test_streamwriter_reset_no_pending(self):
# Issue #23247: Calling reset() on a fresh StreamWriter instance
# (without pending data) must not crash
stream = BytesIO()
writer = self.writer(stream)
writer.reset()
class TestBase_Mapping(unittest.TestCase):
pass_enctest = []

View File

@ -66,6 +66,8 @@ Core and Builtins
Library
-------
- Issue #23247: Fix a crash in the StreamWriter.reset() of CJK codecs.
- Issue #18622: unittest.mock.mock_open().reset_mock would recurse infinitely.
Patch from Nicola Palumbo and Laurent De Buyst.

View File

@ -1629,6 +1629,9 @@ mbstreamwriter_reset(MultibyteStreamWriterObject *self)
{
PyObject *pwrt;
if (!self->pending)
Py_RETURN_NONE;
pwrt = multibytecodec_encode(self->codec, &self->state,
self->pending, NULL, self->errors,
MBENC_FLUSH | MBENC_RESET);