diff options
-rw-r--r-- | source/lib/xfile.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/source/lib/xfile.c b/source/lib/xfile.c index ee6e5813329..d20a95b03a3 100644 --- a/source/lib/xfile.c +++ b/source/lib/xfile.c @@ -47,7 +47,7 @@ XFILE *x_stderr = &_x_stderr; /* simulate setvbuf() */ int x_setvbuf(XFILE *f, char *buf, int mode, size_t size) { - x_fflush(f); + if (x_fflush(f) != 0) return -1; if (f->bufused) return -1; /* on files being read full buffering is the only option */ @@ -150,7 +150,7 @@ int x_fclose(XFILE *f) int ret; /* make sure we flush any buffered data */ - x_fflush(f); + (void)x_fflush(f); ret = close(f->fd); f->fd = -1; @@ -189,7 +189,9 @@ size_t x_fwrite(const void *p, size_t size, size_t nmemb, XFILE *f) if (n == 0) { /* it's full, flush it */ - x_fflush(f); + if (x_fflush(f) != 0) { + return -1; + } continue; } @@ -204,7 +206,9 @@ size_t x_fwrite(const void *p, size_t size, size_t nmemb, XFILE *f) int i; for (i=(size*nmemb)-1; i>=0; i--) { if (*(i+(const char *)p) == '\n') { - x_fflush(f); + if (x_fflush(f) != 0) { + return -1; + } break; } } |