mirror of
https://github.com/python/cpython.git
synced 2025-11-25 04:34:37 +00:00
#14161: fix the __repr__ of file objects to escape the file name.
This commit is contained in:
parent
f60845b70a
commit
11f8b6872a
3 changed files with 19 additions and 4 deletions
|
|
@ -635,10 +635,11 @@ file_dealloc(PyFileObject *f)
|
|||
static PyObject *
|
||||
file_repr(PyFileObject *f)
|
||||
{
|
||||
PyObject *ret = NULL;
|
||||
PyObject *name = NULL;
|
||||
if (PyUnicode_Check(f->f_name)) {
|
||||
#ifdef Py_USING_UNICODE
|
||||
PyObject *ret = NULL;
|
||||
PyObject *name = PyUnicode_AsUnicodeEscapeString(f->f_name);
|
||||
name = PyUnicode_AsUnicodeEscapeString(f->f_name);
|
||||
const char *name_str = name ? PyString_AsString(name) : "?";
|
||||
ret = PyString_FromFormat("<%s file u'%s', mode '%s' at %p>",
|
||||
f->f_fp == NULL ? "closed" : "open",
|
||||
|
|
@ -649,11 +650,16 @@ file_repr(PyFileObject *f)
|
|||
return ret;
|
||||
#endif
|
||||
} else {
|
||||
return PyString_FromFormat("<%s file '%s', mode '%s' at %p>",
|
||||
name = PyObject_Repr(f->f_name);
|
||||
if (name == NULL)
|
||||
return NULL;
|
||||
ret = PyString_FromFormat("<%s file %s, mode '%s' at %p>",
|
||||
f->f_fp == NULL ? "closed" : "open",
|
||||
PyString_AsString(f->f_name),
|
||||
PyString_AsString(name),
|
||||
PyString_AsString(f->f_mode),
|
||||
f);
|
||||
Py_XDECREF(name);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue