[Python-checkins] r65038 - in python/trunk: Lib/test/test_multibytecodec.py Modules/cjkcodecs/multibytecodec.c

georg.brandl python-checkins at python.org
Thu Jul 17 00:04:20 CEST 2008


Author: georg.brandl
Date: Thu Jul 17 00:04:20 2008
New Revision: 65038

Log:
#3305: self->stream can be NULL.


Modified:
   python/trunk/Lib/test/test_multibytecodec.py
   python/trunk/Modules/cjkcodecs/multibytecodec.c

Modified: python/trunk/Lib/test/test_multibytecodec.py
==============================================================================
--- python/trunk/Lib/test/test_multibytecodec.py	(original)
+++ python/trunk/Lib/test/test_multibytecodec.py	Thu Jul 17 00:04:20 2008
@@ -8,6 +8,7 @@
 from test import test_multibytecodec_support
 from test.test_support import TESTFN
 import unittest, StringIO, codecs, sys, os
+import _multibytecodec
 
 ALL_CJKENCODINGS = [
 # _codecs_cn
@@ -53,6 +54,14 @@
         finally:
             os.unlink(TESTFN)
 
+    def test_init_segfault(self):
+        # bug #3305: this used to segfault
+        self.assertRaises(AttributeError,
+                          _multibytecodec.MultibyteStreamReader, None)
+        self.assertRaises(AttributeError,
+                          _multibytecodec.MultibyteStreamWriter, None)
+
+
 class Test_IncrementalEncoder(unittest.TestCase):
 
     def test_stateless(self):

Modified: python/trunk/Modules/cjkcodecs/multibytecodec.c
==============================================================================
--- python/trunk/Modules/cjkcodecs/multibytecodec.c	(original)
+++ python/trunk/Modules/cjkcodecs/multibytecodec.c	Thu Jul 17 00:04:20 2008
@@ -1484,7 +1484,7 @@
 {
 	PyObject_GC_UnTrack(self);
 	ERROR_DECREF(self->errors);
-	Py_DECREF(self->stream);
+	Py_XDECREF(self->stream);
 	Py_TYPE(self)->tp_free(self);
 }
 
@@ -1686,7 +1686,7 @@
 {
 	PyObject_GC_UnTrack(self);
 	ERROR_DECREF(self->errors);
-	Py_DECREF(self->stream);
+	Py_XDECREF(self->stream);
 	Py_TYPE(self)->tp_free(self);
 }
 


More information about the Python-checkins mailing list