[Python-checkins] cpython (3.4): Closes #23247: Fix a crash in the StreamWriter.reset() of CJK codecs

victor.stinner python-checkins at python.org
Thu Jul 16 22:22:55 CEST 2015


https://hg.python.org/cpython/rev/35a6fe0e2b27
changeset:   96920:35a6fe0e2b27
branch:      3.4
parent:      96910:4c8cb603ab42
user:        Victor Stinner <victor.stinner at gmail.com>
date:        Thu Jul 16 22:17:31 2015 +0200
summary:
  Closes #23247: Fix a crash in the StreamWriter.reset() of CJK codecs

files:
  Lib/test/multibytecodec_support.py |  7 +++++++
  Misc/NEWS                          |  2 ++
  Modules/cjkcodecs/multibytecodec.c |  3 +++
  3 files changed, 12 insertions(+), 0 deletions(-)


diff --git a/Lib/test/multibytecodec_support.py b/Lib/test/multibytecodec_support.py
--- a/Lib/test/multibytecodec_support.py
+++ b/Lib/test/multibytecodec_support.py
@@ -270,6 +270,13 @@
 
                 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 = []
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -66,6 +66,8 @@
 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.
 
diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c
--- a/Modules/cjkcodecs/multibytecodec.c
+++ b/Modules/cjkcodecs/multibytecodec.c
@@ -1629,6 +1629,9 @@
 {
     PyObject *pwrt;
 
+    if (!self->pending)
+        Py_RETURN_NONE;
+
     pwrt = multibytecodec_encode(self->codec, &self->state,
                     self->pending, NULL, self->errors,
                     MBENC_FLUSH | MBENC_RESET);

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list