From 58dde891f87bc6131b0ef34c33f6ffb9aa0c0ec3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Fri, 24 Apr 2020 21:48:30 +0300 Subject: Avoid lossy OsString conversions --- crates/ra_project_model/src/lib.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'crates/ra_project_model') diff --git a/crates/ra_project_model/src/lib.rs b/crates/ra_project_model/src/lib.rs index 03f2629da..731cbd291 100644 --- a/crates/ra_project_model/src/lib.rs +++ b/crates/ra_project_model/src/lib.rs @@ -285,8 +285,10 @@ impl ProjectWorkspace { let mut env = Env::default(); let mut extern_source = ExternSource::default(); if let Some(out_dir) = &krate.out_dir { - // FIXME: We probably mangle non UTF-8 paths here, figure out a better solution - env.set("OUT_DIR", out_dir.to_string_lossy().to_string()); + // NOTE: cargo and rustc seem to hide non-UTF-8 strings from env! and option_env!() + if let Some(out_dir) = out_dir.to_str().map(|s| s.to_owned()) { + env.set("OUT_DIR", out_dir); + } if let Some(&extern_source_id) = extern_source_roots.get(out_dir) { extern_source.set_extern_path(&out_dir, extern_source_id); } @@ -402,8 +404,10 @@ impl ProjectWorkspace { let mut env = Env::default(); let mut extern_source = ExternSource::default(); if let Some(out_dir) = &cargo[pkg].out_dir { - // FIXME: We probably mangle non UTF-8 paths here, figure out a better solution - env.set("OUT_DIR", out_dir.to_string_lossy().to_string()); + // NOTE: cargo and rustc seem to hide non-UTF-8 strings from env! and option_env!() + if let Some(out_dir) = out_dir.to_str().map(|s| s.to_owned()) { + env.set("OUT_DIR", out_dir); + } if let Some(&extern_source_id) = extern_source_roots.get(out_dir) { extern_source.set_extern_path(&out_dir, extern_source_id); } -- cgit v1.2.3