]> granicus.if.org Git - python/commitdiff
Issue #12016: my_fgets() now always clears errors before calling fgets(). Fix
authorVictor Stinner <victor.stinner@haypocalc.com>
Mon, 30 May 2011 21:46:00 +0000 (23:46 +0200)
committerVictor Stinner <victor.stinner@haypocalc.com>
Mon, 30 May 2011 21:46:00 +0000 (23:46 +0200)
the following case: sys.stdin.read() stopped with CTRL+d (end of file),
raw_input() interrupted by CTRL+c.

Misc/NEWS
Parser/myreadline.c

index e9bfef9ea652e70fab428263d0824bc5d934fae4..17ba290e3dee580375c170ee27d8972b086d04d7 100644 (file)
--- 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.
index b12d0525b1caf3b56e075ff6aa6b6e9c99f748ff..fb4b805e20d79dac6cb91dab131e4debe7e4bdc7 100644 (file)
@@ -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 */