From 511fa40d23fc77c7867c773135eb0a2fe15a607f Mon Sep 17 00:00:00 2001 From: Oliver Schneider Date: Tue, 15 Nov 2016 14:11:00 +0100 Subject: [PATCH] add test for int -> fn ptr cast --- src/error.rs | 2 +- tests/compile-fail/cast_box_int_to_fn_ptr.rs | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 tests/compile-fail/cast_box_int_to_fn_ptr.rs diff --git a/src/error.rs b/src/error.rs index 52662218ffa..8001d95941e 100644 --- a/src/error.rs +++ b/src/error.rs @@ -61,7 +61,7 @@ impl<'tcx> Error for EvalError<'tcx> { EvalError::DanglingPointerDeref => "dangling pointer was dereferenced", EvalError::InvalidFunctionPointer => - "tried to use an integer pointer as a function pointer", + "tried to use an integer pointer or a dangling pointer as a function pointer", EvalError::InvalidBool => "invalid boolean value read", EvalError::InvalidDiscriminant => diff --git a/tests/compile-fail/cast_box_int_to_fn_ptr.rs b/tests/compile-fail/cast_box_int_to_fn_ptr.rs new file mode 100644 index 00000000000..030bed6a352 --- /dev/null +++ b/tests/compile-fail/cast_box_int_to_fn_ptr.rs @@ -0,0 +1,8 @@ +fn main() { + let b = Box::new(42); + let g = unsafe { + std::mem::transmute::<&usize, &fn(i32)>(&b) + }; + + (*g)(42) //~ ERROR tried to use an integer pointer or a dangling pointer as a function pointer +}