]> granicus.if.org Git - python/commitdiff
Issue #9425: PyFile_FromFd() ignores the name argument
authorVictor Stinner <victor.stinner@haypocalc.com>
Fri, 13 Aug 2010 13:34:52 +0000 (13:34 +0000)
committerVictor Stinner <victor.stinner@haypocalc.com>
Fri, 13 Aug 2010 13:34:52 +0000 (13:34 +0000)
This function is only by imp.find_module() which does return the filename in a
separated variable.

Doc/c-api/file.rst
Objects/fileobject.c

index cc851e6be8b56b79e699e4c2718fdfe2c621205e..0cbe0707ff2048c35f9660c91e34de39135ff991 100644 (file)
@@ -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)
 
index 3709e00bc13d13293e9b49f1b2a252c800529b6f..9288e35b70dbe64bb9532fa529ac23f9a04860af 100644 (file)
@@ -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;
 }