]> granicus.if.org Git - python/commitdiff
Closes #23247: Fix a crash in the StreamWriter.reset() of CJK codecs
authorVictor Stinner <victor.stinner@gmail.com>
Thu, 16 Jul 2015 20:17:31 +0000 (22:17 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Thu, 16 Jul 2015 20:17:31 +0000 (22:17 +0200)
Lib/test/multibytecodec_support.py
Misc/NEWS
Modules/cjkcodecs/multibytecodec.c

index bc1cfc8518d8a585b3e940cff921e91398c1366e..f9884c68ebaa4ee3b975a2629df5c92311daca2e 100644 (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 = []
index 874bbd95edeed33144d35297c4a53811395474c1..c0a5edf9951e8d2a0b53cc47e6e34af88533c33e 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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.
 
index 435529fb0e5304b4bffbb4e8e67088448a611ec7..e0d9b678c2391264f50ac18ae9acf46e2f5e7bd9 100644 (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);