diff options
Diffstat (limited to 'ignore/src/walk.rs')
-rw-r--r-- | ignore/src/walk.rs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/ignore/src/walk.rs b/ignore/src/walk.rs index 8a15984d..8f0a555a 100644 --- a/ignore/src/walk.rs +++ b/ignore/src/walk.rs @@ -11,7 +11,7 @@ use std::time::Duration; use std::vec; use crossbeam::sync::MsQueue; -use same_file::is_same_file; +use same_file::Handle; use walkdir::{self, WalkDir}; use dir::{Ignore, IgnoreBuilder}; @@ -1308,11 +1308,11 @@ fn check_symlink_loop( child_path: &Path, child_depth: usize, ) -> Result<(), Error> { + let hchild = Handle::from_path(child_path).map_err(|err| { + Error::from(err).with_path(child_path).with_depth(child_depth) + })?; for ig in ig_parent.parents().take_while(|ig| !ig.is_absolute_parent()) { - let same = try!(is_same_file(ig.path(), child_path).map_err(|err| { - Error::from(err).with_path(child_path).with_depth(child_depth) - })); - if same { + if ig.handle().map_or(true, |parent| parent == &hchild) { return Err(Error::Loop { ancestor: ig.path().to_path_buf(), child: child_path.to_path_buf(), |