bpo-36589: Fix the error handling in curses.update_lines_cols(). (GH-12766)

Return None instead of 1.
This commit is contained in:
Zackery Spytz 2019-11-17 10:10:13 -07:00 committed by Serhiy Storchaka
parent 111772fc27
commit 2bc343417a
3 changed files with 26 additions and 21 deletions

View File

@ -0,0 +1,2 @@
The :func:`curses.update_lines_cols` function now returns ``None`` instead
of ``1`` on success.

View File

@ -3837,15 +3837,18 @@ update_lines_cols(void)
}
/*[clinic input]
_curses.update_lines_cols -> int
_curses.update_lines_cols
[clinic start generated code]*/
static int
static PyObject *
_curses_update_lines_cols_impl(PyObject *module)
/*[clinic end generated code: output=0345e7f072ea711a input=3a87760f7d5197f0]*/
/*[clinic end generated code: output=423f2b1e63ed0f75 input=5f065ab7a28a5d90]*/
{
return update_lines_cols();
if (!update_lines_cols()) {
return NULL;
}
Py_RETURN_NONE;
}
#endif
@ -3929,8 +3932,10 @@ _curses_resizeterm_impl(PyObject *module, int nlines, int ncols)
result = PyCursesCheckERR(resizeterm(nlines, ncols), "resizeterm");
if (!result)
return NULL;
if (!update_lines_cols())
if (!update_lines_cols()) {
Py_DECREF(result);
return NULL;
}
return result;
}
@ -3966,8 +3971,10 @@ _curses_resize_term_impl(PyObject *module, int nlines, int ncols)
result = PyCursesCheckERR(resize_term(nlines, ncols), "resize_term");
if (!result)
return NULL;
if (!update_lines_cols())
if (!update_lines_cols()) {
Py_DECREF(result);
return NULL;
}
return result;
}
#endif /* HAVE_CURSES_RESIZE_TERM */
@ -4038,12 +4045,18 @@ _curses_start_color_impl(PyObject *module)
c = PyLong_FromLong((long) COLORS);
if (c == NULL)
return NULL;
PyDict_SetItemString(ModDict, "COLORS", c);
if (PyDict_SetItemString(ModDict, "COLORS", c) < 0) {
Py_DECREF(c);
return NULL;
}
Py_DECREF(c);
cp = PyLong_FromLong((long) COLOR_PAIRS);
if (cp == NULL)
return NULL;
PyDict_SetItemString(ModDict, "COLOR_PAIRS", cp);
if (PyDict_SetItemString(ModDict, "COLOR_PAIRS", cp) < 0) {
Py_DECREF(cp);
return NULL;
}
Py_DECREF(cp);
Py_RETURN_NONE;
} else {

View File

@ -3921,23 +3921,13 @@ PyDoc_STRVAR(_curses_update_lines_cols__doc__,
#define _CURSES_UPDATE_LINES_COLS_METHODDEF \
{"update_lines_cols", (PyCFunction)_curses_update_lines_cols, METH_NOARGS, _curses_update_lines_cols__doc__},
static int
static PyObject *
_curses_update_lines_cols_impl(PyObject *module);
static PyObject *
_curses_update_lines_cols(PyObject *module, PyObject *Py_UNUSED(ignored))
{
PyObject *return_value = NULL;
int _return_value;
_return_value = _curses_update_lines_cols_impl(module);
if ((_return_value == -1) && PyErr_Occurred()) {
goto exit;
}
return_value = PyLong_FromLong((long)_return_value);
exit:
return return_value;
return _curses_update_lines_cols_impl(module);
}
#endif /* (defined(HAVE_CURSES_RESIZETERM) || defined(HAVE_CURSES_RESIZE_TERM)) */
@ -4691,4 +4681,4 @@ _curses_use_default_colors(PyObject *module, PyObject *Py_UNUSED(ignored))
#ifndef _CURSES_USE_DEFAULT_COLORS_METHODDEF
#define _CURSES_USE_DEFAULT_COLORS_METHODDEF
#endif /* !defined(_CURSES_USE_DEFAULT_COLORS_METHODDEF) */
/*[clinic end generated code: output=985c0849e841acec input=a9049054013a1b77]*/
/*[clinic end generated code: output=0ca4f95323c5d585 input=a9049054013a1b77]*/