mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
Auto merge of #100007 - ChrisDenton:dtor-inline-never, r=michaelwoerister
Never inline Windows dtor access Inlining can cause problem If used in a Rust dylib. See #44391. r? `@Mark-Simulacrum`
This commit is contained in:
commit
3694b7d307
@ -8,10 +8,14 @@
|
||||
#[thread_local]
|
||||
static mut DESTRUCTORS: Vec<(*mut u8, unsafe extern "C" fn(*mut u8))> = Vec::new();
|
||||
|
||||
// Ensure this can never be inlined because otherwise this may break in dylibs.
|
||||
// See #44391.
|
||||
#[inline(never)]
|
||||
pub unsafe fn register_dtor(t: *mut u8, dtor: unsafe extern "C" fn(*mut u8)) {
|
||||
DESTRUCTORS.push((t, dtor));
|
||||
}
|
||||
|
||||
#[inline(never)] // See comment above
|
||||
/// Runs destructors. This should not be called until thread exit.
|
||||
pub unsafe fn run_keyless_dtors() {
|
||||
// Drop all the destructors.
|
||||
|
Loading…
Reference in New Issue
Block a user