From: Victor Stinner Date: Mon, 30 May 2011 21:46:00 +0000 (+0200) Subject: Issue #12016: my_fgets() now always clears errors before calling fgets(). Fix X-Git-Tag: v3.2.1rc2~106 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4f71101eeda6fb0b55805ebcb12d11124ab3b567;p=thirdparty%2FPython%2Fcpython.git 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. --- diff --git a/Misc/NEWS b/Misc/NEWS index e9bfef9ea652..17ba290e3dee 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 b12d0525b1ca..fb4b805e20d7 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 */