Commit 62e475b8 authored by Andrew M. Kuchling's avatar Andrew M. Kuchling

[Bug #1552726] Avoid repeatedly polling in interactive mode -- only put a timeout on the select()

if an input hook has been defined.  Patch by Richard Boulton.

This select() code is only executed with readline 2.1, or if
READLINE_CALLBACKS is defined.

Backport candidate for 2.5, 2.4, probably earlier versions too.
parent 95b0478c
......@@ -768,10 +768,16 @@ readline_until_enter_or_signal(char *prompt, int *signal)
while (!has_input)
{ struct timeval timeout = {0, 100000}; /* 0.1 seconds */
/* [Bug #1552726] Only limit the pause if an input hook has been
defined. */
struct timeval *timeoutp = NULL;
if (PyOS_InputHook)
timeoutp = &timeout;
FD_SET(fileno(rl_instream), &selectset);
/* select resets selectset if no input was available */
has_input = select(fileno(rl_instream) + 1, &selectset,
NULL, NULL, &timeout);
NULL, NULL, timeoutp);
if(PyOS_InputHook) PyOS_InputHook();
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment