diff -r 00db71b3c5bd Modules/_io/_iomodule.c --- a/Modules/_io/_iomodule.c Mon Jul 23 18:43:18 2012 +0200 +++ b/Modules/_io/_iomodule.c Tue Jul 24 17:24:46 2012 +0300 @@ -427,6 +427,14 @@ buffer = PyObject_CallFunction(Buffered_class, "Oi", raw, buffering); } + if (PyErr_Occurred()) { + PyObject *ptype, *pvalue, *ptraceback; + PyErr_Fetch(&ptype, &pvalue, &ptraceback); + /* Close the file explicitly, otherwise a warning is printed. + * (#11466) */ + PyObject_CallMethod(raw, "close", NULL); + PyErr_Restore(ptype, pvalue, ptraceback); + } Py_CLEAR(raw); if (buffer == NULL) goto error;