aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog15
-rw-r--r--src/emacs.c2
2 files changed, 16 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 44a7606831..7435254b49 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,18 @@
+2011-09-24 Jim Meyering <[email protected]>
+
+ do not ignore write error for any output size
+ The previous change was incomplete.
+ While it makes emacs --batch detect the vast majority of stdout
+ write failures, errors were still ignored whenever the output size is
+ k * (BUFSIZ+1) - 4. E.g., on a system with BUFSIZ of 4096,
+ $ emacs --batch --eval '(print (format "%4093d" 0))' > /dev/full \
+ && echo FAIL: ignored write error
+ FAIL: ignored write error
+ $ emacs --batch --eval '(print (format "%20481d" 0))' > /dev/full \
+ && echo FAIL: ignored write error
+ FAIL: ignored write error
+ * emacs.c (Fkill_emacs): Also test ferror. (Bug#9574)
+
2011-09-23 Andreas Schwab <[email protected]>
* emacs.c (Fkill_emacs): In noninteractive mode exit
diff --git a/src/emacs.c b/src/emacs.c
index 0a684d4423..073156bb0c 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -2019,7 +2019,7 @@ all of which are called before Emacs is actually killed. */)
unlink (SSDATA (Vauto_save_list_file_name));
exit_code = EXIT_SUCCESS;
- if (noninteractive && fflush (stdout))
+ if (noninteractive && (fflush (stdout) || ferror (stdout)))
exit_code = EXIT_FAILURE;
exit (INTEGERP (arg) ? XINT (arg) : exit_code);
}