@@ -1655,6 +1655,21 @@ _curses_window_getbkgd_impl(PyCursesWindowObject *self)
16551655    return  (long ) getbkgd (self -> win );
16561656}
16571657
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+ 
16581673/*[clinic input] 
16591674_curses.window.getch 
16601675
@@ -1737,14 +1752,9 @@ _curses_window_getkey_impl(PyCursesWindowObject *self, int group_right_1,
17371752    Py_END_ALLOW_THREADS 
17381753
17391754    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" );
17481758    } else  if  (rtn  <= 255 ) {
17491759#ifdef  NCURSES_VERSION_MAJOR 
17501760#if  NCURSES_VERSION_MAJOR * 100 + NCURSES_VERSION_MINOR  <= 507 
@@ -1797,14 +1807,9 @@ _curses_window_get_wch_impl(PyCursesWindowObject *self, int group_right_1,
17971807    Py_END_ALLOW_THREADS 
17981808
17991809    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 */ 
18051811        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" );
18081813    }
18091814    if  (ct  ==  KEY_CODE_YES )
18101815        return  PyLong_FromLong (rtn );
0 commit comments