CFI: Add test for `call_once` addr taken

One of the proposed ways to reduce the non-passed argument erasure would
cause this test to fail. Adding this now ensures that any attempt to
reduce non-passed argument erasure won't make the same mistake.
This commit is contained in:
Matthew Maurer 2024-04-04 22:06:58 +00:00
parent a4b11c8e60
commit b53a0f2c9e
1 changed files with 11 additions and 0 deletions

View File

@ -77,3 +77,14 @@ fn closure_addr_taken() {
let call = Fn::<()>::call;
use_closure(call, &f);
}
fn use_closure_once<C>(call: extern "rust-call" fn(C, ()) -> i32, f: C) -> i32 {
call(f, ())
}
#[test]
fn closure_once_addr_taken() {
let g = || 3;
let call2 = FnOnce::<()>::call_once;
use_closure_once(call2, g);
}