diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2021-01-01 17:40:38 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-01 17:40:38 (GMT) |
commit | 187785e2fa2050156a6eda93fb2da31db13f07a6 (patch) | |
tree | 67b566f85860d493dc7a0264628fe71a75f7f7f9 /Modules/_cursesmodule.c | |
parent | 1a544e1dcf8e0880ee35ce78a7f90fc4e5c98c4f (diff) | |
download | cpython-187785e2fa2050156a6eda93fb2da31db13f07a6.zip cpython-187785e2fa2050156a6eda93fb2da31db13f07a6.tar.gz cpython-187785e2fa2050156a6eda93fb2da31db13f07a6.tar.bz2 |
[3.8] bpo-36589: Fix the error handling in curses.update_lines_cols(). (GH-12766) (GH-24023)
Return None instead of 1.
(cherry picked from commit 2bc343417a4de83fa6998ff91303877734ecd366)
Co-authored-by: Zackery Spytz <zspytz@gmail.com>
Diffstat (limited to 'Modules/_cursesmodule.c')
-rw-r--r-- | Modules/_cursesmodule.c | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c index b2b1117..ac23d5d 100644 --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -3757,15 +3757,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 @@ -3849,8 +3852,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; } @@ -3886,8 +3891,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 */ @@ -3958,12 +3965,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 { |