diff options
| author | Andy Russell <arussell123@gmail.com> | 2020-01-04 16:46:47 -0500 |
|---|---|---|
| committer | Andy Russell <arussell123@gmail.com> | 2020-01-11 20:56:46 -0500 |
| commit | 7b564c67deb6f5e9d7102871d63a9ad3d7161278 (patch) | |
| tree | b43fded1c4297cb96a2c7825044d66def77f851c /src/librustc_interface | |
| parent | 1389494ac145a84dba025ff65969f7ab150c3f02 (diff) | |
use winapi for non-stdlib Windows bindings
Diffstat (limited to 'src/librustc_interface')
| -rw-r--r-- | src/librustc_interface/Cargo.toml | 3 | ||||
| -rw-r--r-- | src/librustc_interface/util.rs | 14 |
2 files changed, 9 insertions, 8 deletions
diff --git a/src/librustc_interface/Cargo.toml b/src/librustc_interface/Cargo.toml index eb0551c6065..548985c4514 100644 --- a/src/librustc_interface/Cargo.toml +++ b/src/librustc_interface/Cargo.toml @@ -42,6 +42,9 @@ rustc_resolve = { path = "../librustc_resolve" } tempfile = "3.0.5" once_cell = "1" +[target.'cfg(windows)'.dependencies] +winapi = { version = "0.3", features = ["libloaderapi"] } + [dev-dependencies] rustc_target = { path = "../librustc_target" } diff --git a/src/librustc_interface/util.rs b/src/librustc_interface/util.rs index 2fafd3af7a5..21f9fa48165 100644 --- a/src/librustc_interface/util.rs +++ b/src/librustc_interface/util.rs @@ -340,19 +340,17 @@ fn sysroot_candidates() -> Vec<PathBuf> { fn current_dll_path() -> Option<PathBuf> { use std::ffi::OsString; use std::os::windows::prelude::*; + use std::ptr; - extern "system" { - fn GetModuleHandleExW(dwFlags: u32, lpModuleName: usize, phModule: *mut usize) -> i32; - fn GetModuleFileNameW(hModule: usize, lpFilename: *mut u16, nSize: u32) -> u32; - } - - const GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS: u32 = 0x00000004; + use winapi::um::libloaderapi::{ + GetModuleFileNameW, GetModuleHandleExW, GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, + }; unsafe { - let mut module = 0; + let mut module = ptr::null_mut(); let r = GetModuleHandleExW( GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, - current_dll_path as usize, + current_dll_path as usize as *mut _, &mut module, ); if r == 0 { |
