diff -r 0d2c364c7e5d Lib/test/test_io.py --- a/Lib/test/test_io.py Sat Apr 13 20:12:53 2013 +0300 +++ b/Lib/test/test_io.py Sat Apr 13 19:02:50 2013 -0400 @@ -1388,6 +1388,11 @@ class BufferedRWPairTest(unittest.TestCase): + def test_new(self): + pair = self.tp.__new__(self.tp) + self.assertRaises(Exception, pair.read) + self.assertRaises(Exception, pair.write) + def test_constructor(self): pair = self.tp(self.MockRawIO(), self.MockRawIO()) self.assertFalse(pair.closed) diff -r 0d2c364c7e5d Modules/_io/bufferedio.c --- a/Modules/_io/bufferedio.c Sat Apr 13 20:12:53 2013 +0300 +++ b/Modules/_io/bufferedio.c Sat Apr 13 19:02:50 2013 -0400 @@ -2263,9 +2263,14 @@ static PyObject * _forward_call(buffered *self, _Py_Identifier *name, PyObject *args) { - PyObject *func = _PyObject_GetAttrId((PyObject *)self, name); - PyObject *ret; + PyObject *func, *ret; + if (self == NULL) { + PyErr_SetString(PyExc_RuntimeError, + "the BufferedRWPair has not been initialized"); + return NULL; + } + func = _PyObject_GetAttrId((PyObject *)self, name); if (func == NULL) { PyErr_SetString(PyExc_AttributeError, name->string); return NULL;