Fix bug in strncasecmp

This commit is contained in:
jD91mZM2
2018-10-13 16:55:01 +02:00
parent e4d87a101a
commit edb95246d4
3 changed files with 9 additions and 5 deletions
+1 -1
View File
@@ -40,7 +40,7 @@ redox_syscall = { git = "https://gitlab.redox-os.org/redox-os/syscall.git", bran
spin = "0.4"
[features]
default = ["trace"]
#default = ["trace"]
trace = []
[profile.dev]
+4 -4
View File
@@ -76,14 +76,14 @@ pub unsafe extern "C" fn strncasecmp(
mut second: *const c_char,
mut n: size_t,
) -> c_int {
while *first & !32 == *second & !32 {
if n == 0 || *first == 0 && *second == 0 {
return 0;
while n > 0 && (*first != 0 || *second != 0) {
if *first & !32 != *second & !32 {
return -1;
}
first = first.offset(1);
second = second.offset(1);
n -= 1;
}
-1
0
}
+4
View File
@@ -11,8 +11,12 @@ int main() {
bcopy("hi", new, 3); // include nul byte
assert(!strcasecmp("hi", new));
assert(strcasecmp("he", new));
assert(!strcasecmp("hello", "HEllO"));
assert(strcasecmp("hello", "HEllOo"));
assert(!strncasecmp("hello", "Hello World", 5));
assert(!strncasecmp("FLOOR0_1", "FLOOR0_1FLOOR4_1", 8));
assert(strncasecmp("FL00RO_1", "FLOOR0_1FLOOR4_1", 8));
bzero(new, 1);
assert(*new == 0);