mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
Bug #1502805: don't alias file.__exit__ to file.close since the
latter can return something that's true.
This commit is contained in:
parent
676725db92
commit
98b40ad590
1 changed files with 18 additions and 1 deletions
|
@ -1635,6 +1635,20 @@ file_self(PyFileObject *f)
|
|||
return (PyObject *)f;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
file_exit(PyFileObject *f, PyObject *args)
|
||||
{
|
||||
PyObject *ret = file_close(f);
|
||||
if (!ret)
|
||||
/* If error occurred, pass through */
|
||||
return NULL;
|
||||
Py_DECREF(ret);
|
||||
/* We cannot return the result of close since a true
|
||||
* value will be interpreted as "yes, swallow the
|
||||
* exception if one was raised inside the with block". */
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(readline_doc,
|
||||
"readline([size]) -> next line from the file, as a string.\n"
|
||||
"\n"
|
||||
|
@ -1722,6 +1736,9 @@ PyDoc_STRVAR(isatty_doc,
|
|||
PyDoc_STRVAR(enter_doc,
|
||||
"__enter__() -> self.");
|
||||
|
||||
PyDoc_STRVAR(exit_doc,
|
||||
"__exit__(*excinfo) -> None. Closes the file.");
|
||||
|
||||
static PyMethodDef file_methods[] = {
|
||||
{"readline", (PyCFunction)file_readline, METH_VARARGS, readline_doc},
|
||||
{"read", (PyCFunction)file_read, METH_VARARGS, read_doc},
|
||||
|
@ -1740,7 +1757,7 @@ static PyMethodDef file_methods[] = {
|
|||
{"close", (PyCFunction)file_close, METH_NOARGS, close_doc},
|
||||
{"isatty", (PyCFunction)file_isatty, METH_NOARGS, isatty_doc},
|
||||
{"__enter__", (PyCFunction)file_self, METH_NOARGS, enter_doc},
|
||||
{"__exit__", (PyCFunction)file_close, METH_VARARGS, close_doc},
|
||||
{"__exit__", (PyCFunction)file_exit, METH_VARARGS, exit_doc},
|
||||
{NULL, NULL} /* sentinel */
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue