debug->sparse_detection = COPY_DEBUG_EXTERNAL;
+ bool used_scan_inference = false;
+
for (off_t ext_start = scan_inference->ext_start;
0 <= ext_start && ext_start < max_ipos; )
{
- off_t ext_end = (ext_start == src_pos
- ? scan_inference->hole_start
- : lseek (src_fd, ext_start, SEEK_HOLE));
+ off_t ext_end;
+ if (ext_start == src_pos && ! used_scan_inference)
+ {
+ ext_end = scan_inference->hole_start;
+ used_scan_inference = true;
+ }
+ else
+ ext_end = lseek (src_fd, ext_start, SEEK_HOLE);
if (0 <= ext_end)
ext_end = MIN (ext_end, max_ipos);
else