diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2010-08-13 13:34:52 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2010-08-13 13:34:52 (GMT) |
commit | 3603cc5fdba912602dc714aff3d5d33d56887d23 (patch) | |
tree | 8a6ca89c5b28715ff347753e8c3901996a176be4 | |
parent | 1a4d12d74681d35a40474790925a8ec9c8069b4e (diff) | |
download | cpython-3603cc5fdba912602dc714aff3d5d33d56887d23.zip cpython-3603cc5fdba912602dc714aff3d5d33d56887d23.tar.gz cpython-3603cc5fdba912602dc714aff3d5d33d56887d23.tar.bz2 |
Issue #9425: PyFile_FromFd() ignores the name argument
This function is only by imp.find_module() which does return the filename in a
separated variable.
-rw-r--r-- | Doc/c-api/file.rst | 8 | ||||
-rw-r--r-- | Objects/fileobject.c | 14 |
2 files changed, 9 insertions, 13 deletions
diff --git a/Doc/c-api/file.rst b/Doc/c-api/file.rst index cc851e6..0cbe070 100644 --- a/Doc/c-api/file.rst +++ b/Doc/c-api/file.rst @@ -22,8 +22,9 @@ the :mod:`io` APIs instead. Create a Python file object from the file descriptor of an already opened file *fd*. The arguments *name*, *encoding*, *errors* and *newline* can be *NULL* to use the defaults; *buffering* can be *-1* to use the - default. Return *NULL* on failure. For a more comprehensive description of - the arguments, please refer to the :func:`io.open` function documentation. + default. *name* is ignored and kept for backward compatibility. Return + *NULL* on failure. For a more comprehensive description of the arguments, + please refer to the :func:`io.open` function documentation. .. warning:: @@ -31,6 +32,9 @@ the :mod:`io` APIs instead. OS-level file descriptors can produce various issues (such as unexpected ordering of data). + .. versionchanged:: 3.2 + Ignore *name* attribute. + .. cfunction:: int PyObject_AsFileDescriptor(PyObject *p) diff --git a/Objects/fileobject.c b/Objects/fileobject.c index 3709e00..9288e35 100644 --- a/Objects/fileobject.c +++ b/Objects/fileobject.c @@ -29,7 +29,7 @@ PyObject * PyFile_FromFd(int fd, char *name, char *mode, int buffering, char *encoding, char *errors, char *newline, int closefd) { - PyObject *io, *stream, *nameobj = NULL; + PyObject *io, *stream; io = PyImport_ImportModule("io"); if (io == NULL) @@ -40,16 +40,8 @@ PyFile_FromFd(int fd, char *name, char *mode, int buffering, char *encoding, Py_DECREF(io); if (stream == NULL) return NULL; - if (name != NULL) { - nameobj = PyUnicode_DecodeFSDefault(name); - if (nameobj == NULL) - PyErr_Clear(); - else { - if (PyObject_SetAttrString(stream, "name", nameobj) < 0) - PyErr_Clear(); - Py_DECREF(nameobj); - } - } + /* ignore name attribute because the name attribute of _BufferedIOMixin + and TextIOWrapper is read only */ return stream; } |