aboutsummaryrefslogtreecommitdiff
path: root/contrib/libarchive/libarchive/archive_write_open_file.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/libarchive/libarchive/archive_write_open_file.c')
-rw-r--r--contrib/libarchive/libarchive/archive_write_open_file.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/contrib/libarchive/libarchive/archive_write_open_file.c b/contrib/libarchive/libarchive/archive_write_open_file.c
index 4c6ebfb2269d..0b310f3da83b 100644
--- a/contrib/libarchive/libarchive/archive_write_open_file.c
+++ b/contrib/libarchive/libarchive/archive_write_open_file.c
@@ -85,16 +85,12 @@ file_write(struct archive *a, void *client_data, const void *buff, size_t length
size_t bytesWritten;
mine = client_data;
- for (;;) {
- bytesWritten = fwrite(buff, 1, length, mine->f);
- if (bytesWritten <= 0) {
- if (errno == EINTR)
- continue;
- archive_set_error(a, errno, "Write error");
- return (-1);
- }
- return (bytesWritten);
+ bytesWritten = fwrite(buff, 1, length, mine->f);
+ if (bytesWritten != length) {
+ archive_set_error(a, errno, "Write error");
+ return (-1);
}
+ return (bytesWritten);
}
static int