Skip to content
Snippets Groups Projects
Unverified Commit 774856f9 authored by Tom Almeida's avatar Tom Almeida Committed by GitHub
Browse files

Update lib.rs

parent 3470882d
No related branches found
No related tags found
No related merge requests found
...@@ -12,6 +12,7 @@ use platform::types::*; ...@@ -12,6 +12,7 @@ use platform::types::*;
use errno::*; use errno::*;
use core::cmp; use core::cmp;
use core::usize; use core::usize;
use core::ptr;
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn memccpy( pub unsafe extern "C" fn memccpy(
...@@ -21,18 +22,17 @@ pub unsafe extern "C" fn memccpy( ...@@ -21,18 +22,17 @@ pub unsafe extern "C" fn memccpy(
n: usize, n: usize,
) -> *mut c_void { ) -> *mut c_void {
use compiler_builtins::mem::memcpy; use compiler_builtins::mem::memcpy;
use core::mem;
let dest = dest as *mut u8; let dest = dest as *mut u8;
let to = memchr(src, c, n); let to = memchr(src, c, n);
if to as usize == 0 { if to.is_null() {
return to; return to;
} }
let src = src as *mut u8; let src = src as *mut u8;
let dist = ((to as usize) - (src as usize)) / mem::size_of::<u8>(); let dist = (to as usize) - (src as usize);
if memcpy(dest, src, dist) as usize > 0 { if memcpy(dest, src, dist) as usize > 0 {
return dest.offset(dist as isize + 1) as *mut c_void; return dest.offset(dist as isize + 1) as *mut c_void;
} }
0usize as *mut c_void ptr::null_mut()
} }
#[no_mangle] #[no_mangle]
...@@ -40,15 +40,12 @@ pub unsafe extern "C" fn memchr(s: *const c_void, c: c_int, n: usize) -> *mut c_ ...@@ -40,15 +40,12 @@ pub unsafe extern "C" fn memchr(s: *const c_void, c: c_int, n: usize) -> *mut c_
let s = s as *mut u8; let s = s as *mut u8;
let c = c as u8; let c = c as u8;
let mut i = 0; let mut i = 0;
loop { for i in 0..n {
if *s.offset(i as isize) == c { if *s.offset(i as isize) == c {
return s.offset(i as isize) as *mut c_void; return s.offset(i as isize) as *mut c_void;
} }
i += 1;
if i == n {
return 0usize as *mut c_void;
}
} }
ptr::null_mut()
} }
// #[no_mangle] // #[no_mangle]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment