Check x_fflush returns.
authorJeremy Allison <jra@samba.org>
Tue, 8 Apr 2008 22:08:47 +0000 (15:08 -0700)
committerJeremy Allison <jra@samba.org>
Tue, 8 Apr 2008 22:08:47 +0000 (15:08 -0700)
Jeremy.

source/lib/xfile.c

index ee6e5813329bb5e53221ec7101a70eafa66f48d7..d20a95b03a38f3c6fb9ddfab037232666a07bd91 100644 (file)
@@ -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;
                        }
                }