From 157e1bc6811b033bf640b68ffdf3ea0f1b804ccf Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Tue, 15 Mar 2016 20:19:03 -0700 Subject: Make set_hook take a Box Otherwise there's no good way of re-registering a hook you got out of take_hook. --- src/libstd/panic.rs | 2 +- src/libstd/panicking.rs | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) (limited to 'src/libstd') diff --git a/src/libstd/panic.rs b/src/libstd/panic.rs index 56d638d9df3..aff11d036f8 100644 --- a/src/libstd/panic.rs +++ b/src/libstd/panic.rs @@ -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(handler: F) where F: Fn(&PanicInfo) + 'static + Sync + Send { - set_hook(handler) + set_hook(Box::new(handler)) } /// diff --git a/src/libstd/panicking.rs b/src/libstd/panicking.rs index 556dddf9387..fd6a15b0f69 100644 --- a/src/libstd/panicking.rs +++ b/src/libstd/panicking.rs @@ -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(hook: F) where F: Fn(&PanicInfo) + 'static + Sync + Send { +pub fn set_hook(hook: Box) { 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; -- cgit 1.4.1-3-g733a5