From 98d90ac580f6f6f5c0bcc53366840836c60fe04c Mon Sep 17 00:00:00 2001 From: auronandace Date: Wed, 24 Dec 2025 14:32:08 +0000 Subject: [PATCH] revert previous 2 changes and add Safety note --- src/header/string/mod.rs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/header/string/mod.rs b/src/header/string/mod.rs index ca9f18b3a7..ecd897015e 100644 --- a/src/header/string/mod.rs +++ b/src/header/string/mod.rs @@ -21,6 +21,11 @@ use crate::{ }; /// See . +/// +/// # Safety +/// The caller must ensure that: +/// - `n` is not longer than the memory area pointed to by `s1`, and +/// - `n` is not longer than the memory area pointed to by `s2`. #[unsafe(no_mangle)] pub unsafe extern "C" fn memccpy( s1: *mut c_void, @@ -30,15 +35,7 @@ pub unsafe extern "C" fn memccpy( ) -> *mut c_void { let to = unsafe { memchr(s2, c, n) }; let dist = if to.is_null() { - let dest_len = unsafe { strlen(s1 as *const c_char) }; - let src_len = unsafe { strlen(s2 as *const c_char) }; - if n < dest_len && n < src_len { - n - } else if dest_len < src_len { - dest_len - } else { - src_len - } + n } else { ((to as usize) - (s2 as usize)) + 1 };