mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-29 14:00:29 +00:00
Fix vfprintf and derived functions not handling write errors (#798)
The C standard states: > The fprintf function returns the number of characters transmitted, > or a negative value if an output or encoding error occurred or if > the implementation does not support a specified width length > modifier. - C Standard, 7.23.6.1.15. The fprintf function However, cosmopolitan fails to return a negative value in the case of an output error, meaning that a program such as: #include <stdio.h> int main() { FILE *fp = fopen("/dev/full", "w"); setbuf(fp, NULL); printf("fprintf: %d\n", fprintf(fp, "test\n")); printf("fflush: %d\n", fflush(fp)); } will, under cosmopolitan, print that no error occured in either of the calls to fprintf and fflush. This patch fixes this, along with the associated GitHub issue, https://github.com/jart/cosmopolitan/issues/784
This commit is contained in:
parent
221adfa606
commit
9c6d78c26d
3 changed files with 38 additions and 1 deletions
|
@ -55,6 +55,9 @@ $(TEST_LIBC_FMT_OBJS): private \
|
|||
DEFAULT_CCFLAGS += \
|
||||
-fno-builtin
|
||||
|
||||
o/$(MODE)/test/libc/fmt/fprintf_test.com.runs: \
|
||||
private .UNVEIL += w:/dev/full
|
||||
|
||||
.PHONY: o/$(MODE)/test/libc/fmt
|
||||
o/$(MODE)/test/libc/fmt: \
|
||||
$(TEST_LIBC_FMT_BINS) \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue