mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-23 05:42: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
|
@ -44,7 +44,7 @@ static int vfprintfputchar(const char *s, struct state *t, size_t n) {
|
|||
} else {
|
||||
rc = 0;
|
||||
}
|
||||
return 0;
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue