changeset 70535:de07f90ef45c 3.2

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. [#12016]
author Victor Stinner <victor.stinner@haypocalc.com>
date Mon, 30 May 2011 23:46:00 +0200
parents 85f4b38a61fa
children deb6e7859211 d780ca579e6f
files Misc/NEWS Parser/myreadline.c
diffstat 2 files changed, 5 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,10 @@ What's New in Python 3.2.1 release candi
 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.
--- 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 */