jD91mZM2 6 лет назад
Родитель
Сommit
deee825a1c
2 измененных файлов с 17 добавлено и 14 удалено
  1. 10 4
      src/platform/src/redox/mod.rs
  2. 7 10
      src/stdlib/src/lib.rs

+ 10 - 4
src/platform/src/redox/mod.rs

@@ -433,11 +433,17 @@ pub unsafe fn gethostname(mut name: *mut c_char, len: size_t) -> c_int {
     }
     let mut reader = FileReader(fd);
     for _ in 0..len {
-        if !reader.read_u8(&mut *(name as *mut u8)) {
-            *name = 0;
-            break;
+        match reader.read_u8() {
+            Ok(Some(b)) => {
+                *name = b as c_char;
+                name = name.offset(1);
+            },
+            Ok(None) => {
+                *name = 0;
+                break;
+            },
+            Err(()) => return -1
         }
-        name = name.offset(1);
     }
     0
 }

+ 7 - 10
src/stdlib/src/lib.rs

@@ -75,11 +75,7 @@ pub unsafe extern "C" fn abort() {
 
 #[no_mangle]
 pub extern "C" fn abs(i: c_int) -> c_int {
-    if i < 0 {
-        -i
-    } else {
-        i
-    }
+    i.abs()
 }
 
 #[no_mangle]
@@ -331,11 +327,7 @@ pub extern "C" fn l64a(value: c_long) -> *mut c_char {
 
 #[no_mangle]
 pub extern "C" fn labs(i: c_long) -> c_long {
-    if i < 0 {
-        -i
-    } else {
-        i
-    }
+    i.abs()
 }
 
 // #[no_mangle]
@@ -362,6 +354,11 @@ pub extern "C" fn lrand48() -> c_long {
     unimplemented!();
 }
 
+#[no_mangle]
+pub extern "C" fn llabs(i: c_longlong) -> c_longlong {
+    i.abs()
+}
+
 #[no_mangle]
 pub unsafe extern "C" fn malloc(size: size_t) -> *mut c_void {
     platform::alloc(size)