Issue #23752: When built from an existing file descriptor, io.FileIO() now only

calls fstat() once. Before fstat() was called twice, which was not necessary.
This commit is contained in:
Victor Stinner 2015-03-30 03:21:06 +02:00
parent edddf991d9
commit 520bddf79a
2 changed files with 26 additions and 24 deletions

View file

@ -2,6 +2,32 @@
Python News
+++++++++++
What's New in Python 3.5.0 alpha 4?
===================================
Release date: XXX
Core and Builtins
-----------------
Library
-------
- Issue #23752: When built from an existing file descriptor, io.FileIO() now
only calls fstat() once. Before fstat() was called twice, which was not
necessary.
Build
-----
Tests
-----
Tools/Demos
-----------
What's New in Python 3.5.0 alpha 3?
===================================

View file

@ -177,28 +177,6 @@ fileio_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
return (PyObject *) self;
}
static int
check_fd(int fd)
{
struct _Py_stat_struct buf;
if (_Py_fstat(fd, &buf) < 0 &&
#ifdef MS_WINDOWS
GetLastError() == ERROR_INVALID_HANDLE
#else
errno == EBADF
#endif
) {
PyObject *exc;
char *msg = strerror(EBADF);
exc = PyObject_CallFunction(PyExc_OSError, "(is)",
EBADF, msg);
PyErr_SetObject(PyExc_OSError, exc);
Py_XDECREF(exc);
return -1;
}
return 0;
}
#ifdef O_CLOEXEC
extern int _Py_open_cloexec_works;
#endif
@ -355,8 +333,6 @@ fileio_init(PyObject *oself, PyObject *args, PyObject *kwds)
#endif
if (fd >= 0) {
if (check_fd(fd))
goto error;
self->fd = fd;
self->closefd = closefd;
}