2014-02-14 10:10:06 -08:00
|
|
|
extern crate lib;
|
2013-11-16 17:07:32 -08:00
|
|
|
|
2015-02-17 19:00:20 -08:00
|
|
|
use std::thread;
|
2013-11-16 17:07:32 -08:00
|
|
|
|
2015-02-17 19:00:20 -08:00
|
|
|
static mut statik: isize = 0;
|
2013-11-16 17:07:32 -08:00
|
|
|
|
|
|
|
|
struct A;
|
|
|
|
|
impl Drop for A {
|
|
|
|
|
fn drop(&mut self) {
|
2024-05-29 15:01:33 +10:00
|
|
|
unsafe {
|
|
|
|
|
statik = 1;
|
|
|
|
|
}
|
2013-11-16 17:07:32 -08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn main() {
|
2024-05-29 15:01:33 +10:00
|
|
|
thread::spawn(move || {
|
2013-11-16 17:07:32 -08:00
|
|
|
let _a = A;
|
2014-10-09 15:17:22 -04:00
|
|
|
lib::callback(|| panic!());
|
2024-05-29 15:01:33 +10:00
|
|
|
})
|
|
|
|
|
.join()
|
|
|
|
|
.unwrap_err();
|
2013-11-16 17:07:32 -08:00
|
|
|
|
|
|
|
|
unsafe {
|
2015-06-07 21:00:38 +03:00
|
|
|
assert_eq!(lib::statik, 1);
|
|
|
|
|
assert_eq!(statik, 1);
|
2013-11-16 17:07:32 -08:00
|
|
|
}
|
|
|
|
|
}
|