mirror of
https://github.com/python/cpython.git
synced 2025-07-23 11:15:24 +00:00
gh-105375: Improve error handling in the builtins extension module (#105585)
This commit is contained in:
parent
c932f72849
commit
d4fa52934a
2 changed files with 36 additions and 10 deletions
|
@ -2162,17 +2162,29 @@ builtin_input_impl(PyObject *module, PyObject *prompt)
|
|||
|
||||
/* stdin is a text stream, so it must have an encoding. */
|
||||
stdin_encoding = PyObject_GetAttr(fin, &_Py_ID(encoding));
|
||||
if (stdin_encoding == NULL) {
|
||||
tty = 0;
|
||||
goto _readline_errors;
|
||||
}
|
||||
stdin_errors = PyObject_GetAttr(fin, &_Py_ID(errors));
|
||||
if (!stdin_encoding || !stdin_errors ||
|
||||
!PyUnicode_Check(stdin_encoding) ||
|
||||
!PyUnicode_Check(stdin_errors)) {
|
||||
if (stdin_errors == NULL) {
|
||||
tty = 0;
|
||||
goto _readline_errors;
|
||||
}
|
||||
if (!PyUnicode_Check(stdin_encoding) ||
|
||||
!PyUnicode_Check(stdin_errors))
|
||||
{
|
||||
tty = 0;
|
||||
goto _readline_errors;
|
||||
}
|
||||
stdin_encoding_str = PyUnicode_AsUTF8(stdin_encoding);
|
||||
stdin_errors_str = PyUnicode_AsUTF8(stdin_errors);
|
||||
if (!stdin_encoding_str || !stdin_errors_str)
|
||||
if (stdin_encoding_str == NULL) {
|
||||
goto _readline_errors;
|
||||
}
|
||||
stdin_errors_str = PyUnicode_AsUTF8(stdin_errors);
|
||||
if (stdin_errors_str == NULL) {
|
||||
goto _readline_errors;
|
||||
}
|
||||
tmp = PyObject_CallMethodNoArgs(fout, &_Py_ID(flush));
|
||||
if (tmp == NULL)
|
||||
PyErr_Clear();
|
||||
|
@ -2183,17 +2195,29 @@ builtin_input_impl(PyObject *module, PyObject *prompt)
|
|||
const char *stdout_encoding_str, *stdout_errors_str;
|
||||
PyObject *stringpo;
|
||||
stdout_encoding = PyObject_GetAttr(fout, &_Py_ID(encoding));
|
||||
if (stdout_encoding == NULL) {
|
||||
tty = 0;
|
||||
goto _readline_errors;
|
||||
}
|
||||
stdout_errors = PyObject_GetAttr(fout, &_Py_ID(errors));
|
||||
if (!stdout_encoding || !stdout_errors ||
|
||||
!PyUnicode_Check(stdout_encoding) ||
|
||||
!PyUnicode_Check(stdout_errors)) {
|
||||
if (stdout_errors == NULL) {
|
||||
tty = 0;
|
||||
goto _readline_errors;
|
||||
}
|
||||
if (!PyUnicode_Check(stdout_encoding) ||
|
||||
!PyUnicode_Check(stdout_errors))
|
||||
{
|
||||
tty = 0;
|
||||
goto _readline_errors;
|
||||
}
|
||||
stdout_encoding_str = PyUnicode_AsUTF8(stdout_encoding);
|
||||
stdout_errors_str = PyUnicode_AsUTF8(stdout_errors);
|
||||
if (!stdout_encoding_str || !stdout_errors_str)
|
||||
if (stdout_encoding_str == NULL) {
|
||||
goto _readline_errors;
|
||||
}
|
||||
stdout_errors_str = PyUnicode_AsUTF8(stdout_errors);
|
||||
if (stdout_errors_str == NULL) {
|
||||
goto _readline_errors;
|
||||
}
|
||||
stringpo = PyObject_Str(prompt);
|
||||
if (stringpo == NULL)
|
||||
goto _readline_errors;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue