summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source/lib/xfile.c12
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;
}
}