]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
#3305: self->stream can be NULL.
authorGeorg Brandl <georg@python.org>
Wed, 16 Jul 2008 22:04:20 +0000 (22:04 +0000)
committerGeorg Brandl <georg@python.org>
Wed, 16 Jul 2008 22:04:20 +0000 (22:04 +0000)
Lib/test/test_multibytecodec.py
Modules/cjkcodecs/multibytecodec.c

index f2b042cc7cea8b3805c8176f0e9666637cee3bd2..090374cdafb0d752fb756b3b0f6cdd7dbe74e8cf 100644 (file)
@@ -8,6 +8,7 @@ from test import test_support
 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 @@ class Test_MultibyteCodec(unittest.TestCase):
         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):
index a1b0ca91805ff13e1aba1d6a05efe7eb5bea0c06..2bd8b0dcce77765e3c1916ca6391310d58a47095 100644 (file)
@@ -1484,7 +1484,7 @@ mbstreamreader_dealloc(MultibyteStreamReaderObject *self)
 {
        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 @@ mbstreamwriter_dealloc(MultibyteStreamWriterObject *self)
 {
        PyObject_GC_UnTrack(self);
        ERROR_DECREF(self->errors);
-       Py_DECREF(self->stream);
+       Py_XDECREF(self->stream);
        Py_TYPE(self)->tp_free(self);
 }