From 609bffdee7df8a3557d4beba8004211b956c10d6 Mon Sep 17 00:00:00 2001 From: Folkert de Vries Date: Sun, 22 Feb 2026 13:24:27 +0100 Subject: [PATCH 1/2] c-variadic: remove CString use from test --- .../c-link-to-rust-va-list-fn/checkrust.rs | 22 ++++++++----------- .../c-link-to-rust-va-list-fn/rmake.rs | 2 +- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/tests/run-make/c-link-to-rust-va-list-fn/checkrust.rs b/tests/run-make/c-link-to-rust-va-list-fn/checkrust.rs index 97506cdd592b6..918a940aeb4d5 100644 --- a/tests/run-make/c-link-to-rust-va-list-fn/checkrust.rs +++ b/tests/run-make/c-link-to-rust-va-list-fn/checkrust.rs @@ -1,7 +1,7 @@ #![crate_type = "staticlib"] #![feature(c_variadic)] -use std::ffi::{CStr, CString, VaList, c_char, c_double, c_int, c_long, c_longlong}; +use core::ffi::{CStr, VaList, c_char, c_double, c_int, c_long, c_longlong}; macro_rules! continue_if { ($cond:expr) => { @@ -11,12 +11,8 @@ macro_rules! continue_if { }; } -unsafe fn compare_c_str(ptr: *const c_char, val: &str) -> bool { - let cstr0 = CStr::from_ptr(ptr); - match CString::new(val) { - Ok(cstr1) => &*cstr1 == cstr0, - Err(_) => false, - } +unsafe fn compare_c_str(ptr: *const c_char, val: &CStr) -> bool { + val == CStr::from_ptr(ptr) } #[unsafe(no_mangle)] @@ -35,7 +31,7 @@ pub unsafe extern "C" fn check_list_1(mut ap: VaList) -> usize { continue_if!(ap.arg::() == ';' as c_int); continue_if!(ap.arg::() == 0x32); continue_if!(ap.arg::() == 0x10000001); - continue_if!(compare_c_str(ap.arg::<*const c_char>(), "Valid!")); + continue_if!(compare_c_str(ap.arg::<*const c_char>(), c"Valid!")); 0 } @@ -45,9 +41,9 @@ pub unsafe extern "C" fn check_list_2(mut ap: VaList) -> usize { continue_if!(ap.arg::() == 12); continue_if!(ap.arg::() == 'a' as c_int); continue_if!(ap.arg::().floor() == 6.18f64.floor()); - continue_if!(compare_c_str(ap.arg::<*const c_char>(), "Hello")); + continue_if!(compare_c_str(ap.arg::<*const c_char>(), c"Hello")); continue_if!(ap.arg::() == 42); - continue_if!(compare_c_str(ap.arg::<*const c_char>(), "World")); + continue_if!(compare_c_str(ap.arg::<*const c_char>(), c"World")); 0 } @@ -56,15 +52,15 @@ pub unsafe extern "C" fn check_list_copy_0(mut ap: VaList) -> usize { continue_if!(ap.arg::().floor() == 6.28f64.floor()); continue_if!(ap.arg::() == 16); continue_if!(ap.arg::() == 'A' as c_int); - continue_if!(compare_c_str(ap.arg::<*const c_char>(), "Skip Me!")); + continue_if!(compare_c_str(ap.arg::<*const c_char>(), c"Skip Me!")); let mut ap = ap.clone(); - if compare_c_str(ap.arg::<*const c_char>(), "Correct") { 0 } else { 0xff } + if compare_c_str(ap.arg::<*const c_char>(), c"Correct") { 0 } else { 0xff } } #[unsafe(no_mangle)] pub unsafe extern "C" fn check_varargs_0(_: c_int, mut ap: ...) -> usize { continue_if!(ap.arg::() == 42); - continue_if!(compare_c_str(ap.arg::<*const c_char>(), "Hello, World!")); + continue_if!(compare_c_str(ap.arg::<*const c_char>(), c"Hello, World!")); 0 } diff --git a/tests/run-make/c-link-to-rust-va-list-fn/rmake.rs b/tests/run-make/c-link-to-rust-va-list-fn/rmake.rs index cca528c425264..96b8ade1f1b16 100644 --- a/tests/run-make/c-link-to-rust-va-list-fn/rmake.rs +++ b/tests/run-make/c-link-to-rust-va-list-fn/rmake.rs @@ -10,7 +10,7 @@ use run_make_support::{cc, extra_c_flags, run, rustc, static_lib_name}; fn main() { - rustc().input("checkrust.rs").run(); + rustc().edition("2021").input("checkrust.rs").run(); cc().input("test.c") .input(static_lib_name("checkrust")) .out_exe("test") From c9e44b0ce32b5ea694a3237d963cef3c5905db8e Mon Sep 17 00:00:00 2001 From: Folkert de Vries Date: Sun, 22 Feb 2026 13:26:54 +0100 Subject: [PATCH 2/2] c-variadic: remove f64::floor use from test --- tests/run-make/c-link-to-rust-va-list-fn/checkrust.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/run-make/c-link-to-rust-va-list-fn/checkrust.rs b/tests/run-make/c-link-to-rust-va-list-fn/checkrust.rs index 918a940aeb4d5..c522ac46d918e 100644 --- a/tests/run-make/c-link-to-rust-va-list-fn/checkrust.rs +++ b/tests/run-make/c-link-to-rust-va-list-fn/checkrust.rs @@ -37,10 +37,10 @@ pub unsafe extern "C" fn check_list_1(mut ap: VaList) -> usize { #[unsafe(no_mangle)] pub unsafe extern "C" fn check_list_2(mut ap: VaList) -> usize { - continue_if!(ap.arg::().floor() == 3.14f64.floor()); + continue_if!(ap.arg::() == 3.14f64); continue_if!(ap.arg::() == 12); continue_if!(ap.arg::() == 'a' as c_int); - continue_if!(ap.arg::().floor() == 6.18f64.floor()); + continue_if!(ap.arg::() == 6.28f64); continue_if!(compare_c_str(ap.arg::<*const c_char>(), c"Hello")); continue_if!(ap.arg::() == 42); continue_if!(compare_c_str(ap.arg::<*const c_char>(), c"World")); @@ -49,7 +49,7 @@ pub unsafe extern "C" fn check_list_2(mut ap: VaList) -> usize { #[unsafe(no_mangle)] pub unsafe extern "C" fn check_list_copy_0(mut ap: VaList) -> usize { - continue_if!(ap.arg::().floor() == 6.28f64.floor()); + continue_if!(ap.arg::() == 6.28f64); continue_if!(ap.arg::() == 16); continue_if!(ap.arg::() == 'A' as c_int); continue_if!(compare_c_str(ap.arg::<*const c_char>(), c"Skip Me!")); @@ -66,7 +66,7 @@ pub unsafe extern "C" fn check_varargs_0(_: c_int, mut ap: ...) -> usize { #[unsafe(no_mangle)] pub unsafe extern "C" fn check_varargs_1(_: c_int, mut ap: ...) -> usize { - continue_if!(ap.arg::().floor() == 3.14f64.floor()); + continue_if!(ap.arg::() == 3.14f64); continue_if!(ap.arg::() == 12); continue_if!(ap.arg::() == 'A' as c_int); continue_if!(ap.arg::() == 1);