diff options
Diffstat (limited to 'src/copy-file-data.c')
| -rw-r--r-- | src/copy-file-data.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/copy-file-data.c b/src/copy-file-data.c index 125cf7856..c88b10cb3 100644 --- a/src/copy-file-data.c +++ b/src/copy-file-data.c @@ -338,7 +338,7 @@ lseek_copy (int src_fd, int dest_fd, char **abuf, idx_t buf_size, for (off_t ext_start = scan_inference->ext_start; 0 <= ext_start && ext_start < max_ipos; ) { - off_t ext_end = (ext_start == 0 + off_t ext_end = (ext_start == ipos ? scan_inference->hole_start : lseek (src_fd, ext_start, SEEK_HOLE)); if (0 <= ext_end) @@ -497,7 +497,7 @@ infer_scantype (int fd, struct stat const *sb, off_t pos, } else if (pos < scan_inference->ext_start || errno == ENXIO) { - scan_inference->hole_start = 0; /* Pacify -Wmaybe-uninitialized. */ + scan_inference->hole_start = pos; /* Pacify -Wmaybe-uninitialized. */ return LSEEK_SCANTYPE; } else if (errno != EINVAL && !is_ENOTSUP (errno)) |
