Make set_hook take a Box<Fn>
Otherwise there's no good way of re-registering a hook you got out of take_hook.
This commit is contained in:
parent
159eae8b8b
commit
157e1bc681
@ -29,7 +29,7 @@ pub use panicking::{take_hook, set_hook, PanicInfo, Location};
|
||||
#[rustc_deprecated(since = "1.9.0", reason = "renamed to set_hook")]
|
||||
#[unstable(feature = "panic_handler", reason = "awaiting feedback", issue = "30449")]
|
||||
pub fn set_handler<F>(handler: F) where F: Fn(&PanicInfo) + 'static + Sync + Send {
|
||||
set_hook(handler)
|
||||
set_hook(Box::new(handler))
|
||||
}
|
||||
|
||||
///
|
||||
|
@ -58,12 +58,11 @@ static FIRST_PANIC: AtomicBool = AtomicBool::new(true);
|
||||
///
|
||||
/// Panics if called from a panicking thread.
|
||||
#[unstable(feature = "panic_handler", reason = "awaiting feedback", issue = "30449")]
|
||||
pub fn set_hook<F>(hook: F) where F: Fn(&PanicInfo) + 'static + Sync + Send {
|
||||
pub fn set_hook(hook: Box<Fn(&PanicInfo) + 'static + Sync + Send>) {
|
||||
if thread::panicking() {
|
||||
panic!("cannot modify the panic hook from a panicking thread");
|
||||
}
|
||||
|
||||
let hook = Box::new(hook);
|
||||
unsafe {
|
||||
let lock = HOOK_LOCK.write();
|
||||
let old_hook = HOOK;
|
||||
|
Loading…
x
Reference in New Issue
Block a user