diff options
Diffstat (limited to 'src/libstd/task/local_data_priv.rs')
| -rw-r--r-- | src/libstd/task/local_data_priv.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/libstd/task/local_data_priv.rs b/src/libstd/task/local_data_priv.rs index 75fd6eacc1b..d5f4973e8c7 100644 --- a/src/libstd/task/local_data_priv.rs +++ b/src/libstd/task/local_data_priv.rs @@ -15,6 +15,7 @@ use libc; use local_data; use prelude::*; use ptr; +use sys; use task::rt; use util; @@ -156,8 +157,9 @@ unsafe fn get_local_map(handle: Handle) -> &mut TaskLocalMap { } } -fn key_to_key_value<T: 'static>(key: local_data::Key<T>) -> *libc::c_void { - unsafe { cast::transmute(key) } +unsafe fn key_to_key_value<T: 'static>(key: local_data::Key<T>) -> *libc::c_void { + let pair: sys::Closure = cast::transmute_copy(&key); + return pair.code as *libc::c_void; } pub unsafe fn local_pop<T: 'static>(handle: Handle, |
