Просмотр исходного кода

Reimplement strpbrk() using strcspn()

Andrii Zymohliad 7 лет назад
Родитель
Сommit
40efea056b
1 измененных файлов с 5 добавлено и 7 удалено
  1. 5 7
      src/string/src/lib.rs

+ 5 - 7
src/string/src/lib.rs

@@ -251,14 +251,12 @@ pub unsafe extern "C" fn strncpy(s1: *mut c_char, s2: *const c_char, n: usize) -
 
 #[no_mangle]
 pub unsafe extern "C" fn strpbrk(s1: *const c_char, s2: *const c_char) -> *mut c_char {
-    let mut i = 0;
-    while *s1.offset(i) != 0 {
-        if !strchr(s2, *s1.offset(i) as i32).is_null() {
-            return s1.offset(i) as *mut c_char;
-        }
-        i += 1;
+    let p = s1.offset(strcspn(s1, s2) as isize);
+    if *p != 0 {
+        p as *mut c_char
+    } else {
+        ptr::null_mut()
     }
-    ptr::null_mut()
 }
 
 #[no_mangle]