diff --git a/tools/delta/bmdiff.c b/tools/delta/bmdiff.c index 099dac60..8e203de3 100644 --- a/tools/delta/bmdiff.c +++ b/tools/delta/bmdiff.c @@ -149,7 +149,15 @@ int main(int argc, char *argv[]) if (r < 0) exit(5); if (r > 0) { - pwrite(fd1, dest, r, len3); + int off = 0; + while (off < r) { + ssize_t wr = pwrite(fd1, dest + off, r - off, len3 + off); + if (wr <= 0) { + perror("pwrite"); + exit(5); + } + off += (int)wr; + } len3 += r; } } while (r > 0);