mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-28 04:44:57 +00:00
internal: a bit more of cwd safety for flycheck
This commit is contained in:
parent
8df38aa797
commit
8d8c26e6f5
16 changed files with 72 additions and 52 deletions
|
@ -1,6 +1,7 @@
|
|||
//! Handles dynamic library loading for proc macro
|
||||
|
||||
use std::{
|
||||
convert::TryInto,
|
||||
fmt,
|
||||
fs::File,
|
||||
io,
|
||||
|
@ -10,6 +11,7 @@ use std::{
|
|||
use libloading::Library;
|
||||
use memmap2::Mmap;
|
||||
use object::Object;
|
||||
use paths::AbsPath;
|
||||
use proc_macro_api::{read_dylib_info, ProcMacroKind};
|
||||
|
||||
use super::abis::Abi;
|
||||
|
@ -116,7 +118,10 @@ impl ProcMacroLibraryLibloading {
|
|||
invalid_data_err(format!("Cannot find registrar symbol in file {}", file.display()))
|
||||
})?;
|
||||
|
||||
let version_info = read_dylib_info(file)?;
|
||||
let abs_file: &AbsPath = file.try_into().map_err(|_| {
|
||||
invalid_data_err(format!("expected an absolute path, got {}", file.display()))
|
||||
})?;
|
||||
let version_info = read_dylib_info(&abs_file)?;
|
||||
|
||||
let lib = load_library(file).map_err(invalid_data_err)?;
|
||||
let abi = Abi::from_lib(&lib, symbol_name, version_info)?;
|
||||
|
@ -136,7 +141,7 @@ impl Expander {
|
|||
|
||||
let lib = ensure_file_with_lock_free_access(&lib)?;
|
||||
|
||||
let library = ProcMacroLibraryLibloading::open(&lib)?;
|
||||
let library = ProcMacroLibraryLibloading::open(lib.as_ref())?;
|
||||
|
||||
Ok(Expander { inner: library })
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue