From 0e1a4a4da29caadba5d5cd86a5cd2587fdb0755d Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Sat, 25 Aug 2012 16:53:44 -0700 Subject: libcore: rewrite vec::unsafe::from_buf in pure rust --- src/libcore/vec.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'src/libcore') diff --git a/src/libcore/vec.rs b/src/libcore/vec.rs index 1533b07861c..448678abf7c 100644 --- a/src/libcore/vec.rs +++ b/src/libcore/vec.rs @@ -102,9 +102,6 @@ extern mod rustrt { fn vec_reserve_shared(++t: *sys::TypeDesc, ++v: **unsafe::VecRepr, ++n: libc::size_t); - fn vec_from_buf_shared(++t: *sys::TypeDesc, - ++ptr: *(), - ++count: libc::size_t) -> *unsafe::VecRepr; } #[abi = "rust-intrinsic"] @@ -1727,10 +1724,11 @@ mod unsafe { */ #[inline(always)] unsafe fn from_buf(ptr: *T, elts: uint) -> ~[T] { - return ::unsafe::reinterpret_cast( - rustrt::vec_from_buf_shared(sys::get_type_desc::(), - ptr as *(), - elts as size_t)); + let mut dst = ~[]; + reserve(dst, elts); + set_len(dst, elts); + as_buf(dst, |p_dst, _len_dst| ptr::memcpy(p_dst, ptr, elts)); + dst } /** -- cgit 1.4.1-3-g733a5