about summary refs log tree commit diff
path: root/src/librustc/metadata
diff options
context:
space:
mode:
authorTim Chevalier <chevalier@alum.wellesley.edu>2013-01-24 15:23:31 -0800
committerTim Chevalier <chevalier@alum.wellesley.edu>2013-01-24 15:24:01 -0800
commit5ff6beed60fe3a1b783968deda9b5ca99afbeba6 (patch)
treed1d70928e9c1821e613c16c05108a98d49fcc089 /src/librustc/metadata
parent72c04a9ffe0f8d164599e2f24f02277f1499f089 (diff)
downloadrust-5ff6beed60fe3a1b783968deda9b5ca99afbeba6.tar.gz
rust-5ff6beed60fe3a1b783968deda9b5ca99afbeba6.zip
rustc: One Less Bad Copy
Diffstat (limited to 'src/librustc/metadata')
-rw-r--r--src/librustc/metadata/filesearch.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/librustc/metadata/filesearch.rs b/src/librustc/metadata/filesearch.rs
index 15c0a1944ea..b818bca650d 100644
--- a/src/librustc/metadata/filesearch.rs
+++ b/src/librustc/metadata/filesearch.rs
@@ -148,10 +148,12 @@ fn get_cargo_root_nearest() -> Result<Path, ~str> {
     do result::chain(get_cargo_root()) |p| {
         let cwd = os::getcwd();
         let cwd_cargo = cwd.push(".cargo");
+        let cargo_is_non_root_file =
+            !os::path_is_dir(&cwd_cargo) && cwd_cargo != p;
         let mut par_cargo = cwd.pop().push(".cargo");
-        let mut rslt = result::Ok(copy cwd_cargo);  // XXX: Bad copy.
+        let mut rslt = result::Ok(cwd_cargo);
 
-        if !os::path_is_dir(&cwd_cargo) && cwd_cargo != p {
+        if cargo_is_non_root_file {
             while par_cargo != p {
                 if os::path_is_dir(&par_cargo) {
                     rslt = result::Ok(par_cargo);