diff --git a/src/string/src/lib.rs b/src/string/src/lib.rs
index 5a6eb9bfa5dd9cfac01754eaa9e6f1229c833bd9..b639cf2e53b4b1dad6a2750b893cd576ee0877d0 100644
--- a/src/string/src/lib.rs
+++ b/src/string/src/lib.rs
@@ -92,16 +92,13 @@ pub unsafe extern "C" fn strcat(s1: *mut c_char, s2: *const c_char) -> *mut c_ch
 pub unsafe extern "C" fn strchr(s: *const c_char, c: c_int) -> *mut c_char {
     let c = c as i8;
     let mut i = 0;
-    loop {
-        let cur = *s.offset(i);
-        if cur == c {
+    while *s.offset(i) != 0 {
+        if *s.offset(i) == c {
             return s.offset(i) as *mut c_char;
         }
-        if cur == 0 {
-            return ptr::null_mut();
-        }
         i += 1;
     }
+    ptr::null_mut()
 }
 
 #[no_mangle]