[issue1195] Problems on Linux with Ctrl-D and Ctrl-C during raw_input
Ralf Schmitt
report at bugs.python.org
Fri Jan 4 18:19:17 CET 2008
Ralf Schmitt added the comment:
The following patch fixes it. The end-of-file indicator is still set,
fgets returns NULL when ctrl-c is pressed, and the code checks for
feof(fp) which is true. PyErr_CheckSignals() isn't called.
This patch calls clearerr on the filepointer and consequently after
ctrl-c feof(fp) is false and PyErr_CheckSignals is called.
What I don't understand is why the backtrace says the KeyboardInterrupt
happens in raw_input. PyErr_CheckSignals must be called on the "pass"
statement otherwise something would be fundamentally broken (But I guess
then python somehow saves the last real bytecode command).
~/Python-2.5.1/ hg diff
diff --git a/Parser/myreadline.c b/Parser/myreadline.c
--- a/Parser/myreadline.c
+++ b/Parser/myreadline.c
@@ -44,6 +44,7 @@ my_fgets(char *buf, int len, FILE *fp)
if (PyOS_InputHook != NULL)
(void)(PyOS_InputHook)();
errno = 0;
+ clearerr(fp);
p = fgets(buf, len, fp);
if (p != NULL)
return 0; /* No error */
----------
nosy: +schmir
__________________________________
Tracker <report at bugs.python.org>
<http://bugs.python.org/issue1195>
__________________________________
More information about the Python-bugs-list
mailing list