r67052 - in python/trunk: Lib/test/test_io.py Modules/_fileio.c
Author: christian.heimes Date: Thu Oct 30 22:26:15 2008 New Revision: 67052 Log: Issue #4237: io.FileIO() was raising invalid warnings caused by insufficient initialization of PyFileIOObject struct members. Modified: python/trunk/Lib/test/test_io.py python/trunk/Modules/_fileio.c Modified: python/trunk/Lib/test/test_io.py ============================================================================== --- python/trunk/Lib/test/test_io.py (original) +++ python/trunk/Lib/test/test_io.py Thu Oct 30 22:26:15 2008 @@ -1236,6 +1236,13 @@ else: self.assert_(issubclass(obj, io.IOBase)) + def test_fileio_warnings(self): + with test_support.check_warnings() as w: + self.assertEqual(w.warnings, []) + self.assertRaises(TypeError, io.FileIO, []) + self.assertEqual(w.warnings, []) + self.assertRaises(ValueError, io.FileIO, "/some/invalid/name", "rt") + self.assertEqual(w.warnings, []) def test_main(): test_support.run_unittest(IOTest, BytesIOTest, StringIOTest, Modified: python/trunk/Modules/_fileio.c ============================================================================== --- python/trunk/Modules/_fileio.c (original) +++ python/trunk/Modules/_fileio.c Thu Oct 30 22:26:15 2008 @@ -86,6 +86,10 @@ self = (PyFileIOObject *) type->tp_alloc(type, 0); if (self != NULL) { self->fd = -1; + self->readable = 0; + self->writable = 0; + self->seekable = -1; + self->closefd = 1; self->weakreflist = NULL; } @@ -179,8 +183,6 @@ } } - self->readable = self->writable = 0; - self->seekable = -1; s = mode; while (*s) { switch (*s++) {
participants (1)
-
christian.heimes