Implement suggestions from the PR

- Move loading of atomic bool outside the loop
  - Add comment about TryFrom for future improvement
This commit is contained in:
Nicolas Koch 2018-05-24 14:51:59 +02:00
parent 09d03bc245
commit 3f392abdfb

View file

@ -818,14 +818,16 @@ pub fn copy(from: &Path, to: &Path) -> io::Result<u64> {
(metadata.permissions(), metadata.size())
};
let has_copy_file_range = HAS_COPY_FILE_RANGE.load(Ordering::Relaxed);
let mut written = 0u64;
while written < len {
// TODO should ideally use TryFrom
let bytes_to_copy = if len - written > usize::max_value() as u64 {
usize::max_value()
} else {
(len - written) as usize
};
let copy_result = if HAS_COPY_FILE_RANGE.load(Ordering::Relaxed) {
let copy_result = if has_copy_file_range {
let copy_result = unsafe {
// We actually don't have to adjust the offsets,
// because copy_file_range adjusts the file offset automatically