From 4f71101eeda6fb0b55805ebcb12d11124ab3b567 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 30 May 2011 23:46:00 +0200 Subject: [PATCH] Issue #12016: my_fgets() now always clears errors before calling fgets(). Fix the following case: sys.stdin.read() stopped with CTRL+d (end of file), raw_input() interrupted by CTRL+c. --- Misc/NEWS | 4 ++++ Parser/myreadline.c | 1 + 2 files changed, 5 insertions(+) diff --git a/Misc/NEWS b/Misc/NEWS index e9bfef9ea65..17ba290e3de 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,6 +10,10 @@ What's New in Python 3.2.1 release candidate 2? Core and Builtins ----------------- +- Issue #12016: my_fgets() now always clears errors before calling fgets(). Fix + the following case: sys.stdin.read() stopped with CTRL+d (end of file), + raw_input() interrupted by CTRL+c. + - Issue #9670: Increase the default stack size for secondary threads on Mac OS X and FreeBSD to reduce the chances of a crash instead of a "maximum recursion depth" RuntimeError exception. diff --git a/Parser/myreadline.c b/Parser/myreadline.c index b12d0525b1c..fb4b805e20d 100644 --- a/Parser/myreadline.c +++ b/Parser/myreadline.c @@ -40,6 +40,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 */