diff --git a/src/header/strings/mod.rs b/src/header/strings/mod.rs index 66661ce043ebc239ee9ebc4ce0b14b56073f0a6e..d681f2223d9d8988ae46a26f2cc3471d2cc8ea47 100644 --- a/src/header/strings/mod.rs +++ b/src/header/strings/mod.rs @@ -67,22 +67,7 @@ pub unsafe extern "C" fn rindex(mut s: *const c_char, c: c_int) -> *mut c_char { #[no_mangle] pub unsafe extern "C" fn strcasecmp(mut first: *const c_char, mut second: *const c_char) -> c_int { - while *first != 0 && *second != 0 { - let mut i = *first; - let mut j = *second; - - if i & !32 != j & !32 { - return -1; - } - - first = first.offset(1); - second = second.offset(1); - } - // Both strings didn't end with NUL bytes - if *first != *second { - return -1; - } - 0 + strncasecmp(first, second, size_t::max_value()) } #[no_mangle] @@ -91,21 +76,14 @@ pub unsafe extern "C" fn strncasecmp( mut second: *const c_char, mut n: size_t, ) -> c_int { - while *first != 0 && *second != 0 && n > 0 { - let mut i = *first; - let mut j = *second; - - if i & !32 != j & !32 { - return -1; + while *first & !32 == *second & !32 { + if n == 0 || *first == 0 && *second == 0 { + return 0; } first = first.offset(1); second = second.offset(1); n -= 1; } - // Both strings didn't end with NUL bytes (unless we reached the limit) - if n > 0 && *first != *second { - return -1; - } - 0 + -1 }