@@ -1655,6 +1655,21 @@ _curses_window_getbkgd_impl(PyCursesWindowObject *self)
1655
1655
return (long ) getbkgd (self -> win );
1656
1656
}
1657
1657
1658
+ static PyObject *
1659
+ curses_check_signals_on_input_error (PyCursesWindowObject * self ,
1660
+ const char * curses_funcname ,
1661
+ const char * python_funcname )
1662
+ {
1663
+ assert (!PyErr_Occurred ());
1664
+ if (PyErr_CheckSignals ()) {
1665
+ return NULL ;
1666
+ }
1667
+ cursesmodule_state * state = get_cursesmodule_state_by_win (self );
1668
+ PyErr_Format (state -> error , "%s() (called by %s()): no input" ,
1669
+ curses_funcname , python_funcname );
1670
+ return NULL ;
1671
+ }
1672
+
1658
1673
/*[clinic input]
1659
1674
_curses.window.getch
1660
1675
@@ -1737,14 +1752,9 @@ _curses_window_getkey_impl(PyCursesWindowObject *self, int group_right_1,
1737
1752
Py_END_ALLOW_THREADS
1738
1753
1739
1754
if (rtn == ERR ) {
1740
- /* getch() returns ERR in nodelay mode */
1741
- PyErr_CheckSignals ();
1742
- if (!PyErr_Occurred ()) {
1743
- cursesmodule_state * state = get_cursesmodule_state_by_win (self );
1744
- const char * funcname = group_right_1 ? "mvwgetch" : "wgetch" ;
1745
- PyErr_Format (state -> error , "getkey(): %s(): no input" , funcname );
1746
- }
1747
- return NULL ;
1755
+ /* wgetch() returns ERR in nodelay mode */
1756
+ const char * funcname = group_right_1 ? "mvwgetch" : "wgetch" ;
1757
+ return curses_check_signals_on_input_error (self , funcname , "getkey" );
1748
1758
} else if (rtn <= 255 ) {
1749
1759
#ifdef NCURSES_VERSION_MAJOR
1750
1760
#if NCURSES_VERSION_MAJOR * 100 + NCURSES_VERSION_MINOR <= 507
@@ -1797,14 +1807,9 @@ _curses_window_get_wch_impl(PyCursesWindowObject *self, int group_right_1,
1797
1807
Py_END_ALLOW_THREADS
1798
1808
1799
1809
if (ct == ERR ) {
1800
- if (PyErr_CheckSignals ())
1801
- return NULL ;
1802
-
1803
- /* get_wch() returns ERR in nodelay mode */
1804
- cursesmodule_state * state = get_cursesmodule_state_by_win (self );
1810
+ /* wget_wch() returns ERR in nodelay mode */
1805
1811
const char * funcname = group_right_1 ? "mvwget_wch" : "wget_wch" ;
1806
- PyErr_Format (state -> error , "get_wch(): %s(): no input" , funcname );
1807
- return NULL ;
1812
+ return curses_check_signals_on_input_error (self , funcname , "get_wch" );
1808
1813
}
1809
1814
if (ct == KEY_CODE_YES )
1810
1815
return PyLong_FromLong (rtn );
0 commit comments