diff -r 2a142141e5fd Lib/test/test_io.py --- a/Lib/test/test_io.py Thu Mar 08 20:58:29 2012 -0800 +++ b/Lib/test/test_io.py Fri Mar 09 12:37:25 2012 +0000 @@ -339,6 +339,10 @@ self.assertEqual(f.seek(0, 2), self.LARGE + 1) self.assertEqual(f.seek(-1, 2), self.LARGE) self.assertEqual(f.read(2), b"x") + + def test_UnsupportedOperation_new(self): + ex = self.UnsupportedOperation.__new__(self.UnsupportedOperation) + self.assertTrue(type(ex) == self.UnsupportedOperation) def test_invalid_operations(self): # Try writing on a file opened in read mode and vice-versa. diff -r 2a142141e5fd Modules/_io/_iomodule.c --- a/Modules/_io/_iomodule.c Thu Mar 08 20:58:29 2012 -0800 +++ b/Modules/_io/_iomodule.c Fri Mar 09 12:37:25 2012 +0000 @@ -609,7 +609,7 @@ /* UnsupportedOperation inherits from ValueError and IOError */ state->unsupported_operation = PyObject_CallFunction( (PyObject *)&PyType_Type, "s(OO){}", - "UnsupportedOperation", PyExc_ValueError, PyExc_IOError); + "UnsupportedOperation", PyExc_IOError, PyExc_ValueError); if (state->unsupported_operation == NULL) goto fail; Py_INCREF(state->unsupported_operation);