diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2015-03-30 01:21:06 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2015-03-30 01:21:06 (GMT) |
commit | 520bddf79a06c06d7b293408a6e3cc119f808afb (patch) | |
tree | 223cf7165bc91afaf09008f1b34f927e7637e22b | |
parent | edddf991d9ea88d16c8ebef7a5f829822d8025fa (diff) | |
download | cpython-520bddf79a06c06d7b293408a6e3cc119f808afb.zip cpython-520bddf79a06c06d7b293408a6e3cc119f808afb.tar.gz cpython-520bddf79a06c06d7b293408a6e3cc119f808afb.tar.bz2 |
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.
-rw-r--r-- | Misc/NEWS | 26 | ||||
-rw-r--r-- | Modules/_io/fileio.c | 24 |
2 files changed, 26 insertions, 24 deletions
@@ -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? =================================== diff --git a/Modules/_io/fileio.c b/Modules/_io/fileio.c index b35a51b..595f99e 100644 --- a/Modules/_io/fileio.c +++ b/Modules/_io/fileio.c @@ -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; } |