| { | ||
| "git": { | ||
| "sha1": "97925027920f7a284774f76a48c3126297d2fd13" | ||
| "sha1": "f88c62e59fc130edf1185b6c33720eb4874c814a" | ||
| } | ||
| } |
+2
-1
@@ -15,3 +15,3 @@ # THIS FILE IS AUTOMATICALLY GENERATED BY CARGO | ||
| name = "arrayvec" | ||
| version = "0.4.11" | ||
| version = "0.4.12" | ||
| authors = ["bluss"] | ||
@@ -29,2 +29,3 @@ description = "A vector with fixed capacity, backed by an array (it can be stored on the stack too). Implements fixed capacity ArrayVec and ArrayString." | ||
| no-dev-version = true | ||
| tag-name = "{{version}}" | ||
@@ -31,0 +32,0 @@ [[bench]] |
+5
-0
@@ -25,2 +25,7 @@ | ||
| - 0.4.12 | ||
| - Use raw pointers instead of ``get_unchecked_mut`` where the target may be | ||
| uninitialized a everywhere relevant in the ArrayVec implementation. | ||
| - 0.4.11 | ||
@@ -27,0 +32,0 @@ |
+15
-13
@@ -246,6 +246,11 @@ //! **arrayvec** provides the types `ArrayVec` and `ArrayString`: | ||
| debug_assert!(len < A::capacity()); | ||
| ptr::write(self.get_unchecked_mut(len), element); | ||
| ptr::write(self.get_unchecked_ptr(len), element); | ||
| self.set_len(len + 1); | ||
| } | ||
| /// Get pointer to where element at `index` would be | ||
| unsafe fn get_unchecked_ptr(&mut self, index: usize) -> *mut A::Item { | ||
| self.xs.ptr_mut().offset(index as isize) | ||
| } | ||
| /// Insert `element` at position `index`. | ||
@@ -308,3 +313,3 @@ /// | ||
| { | ||
| let p: *mut _ = self.get_unchecked_mut(index); | ||
| let p: *mut _ = self.get_unchecked_ptr(index); | ||
| // Shift everything over to make space. (Duplicating the | ||
@@ -343,3 +348,3 @@ // `index`th element into two consecutive places.) | ||
| self.set_len(new_len); | ||
| Some(ptr::read(self.get_unchecked_mut(new_len))) | ||
| Some(ptr::read(self.get_unchecked_ptr(new_len))) | ||
| } | ||
@@ -707,3 +712,3 @@ } | ||
| self.index = Index::from(index + 1); | ||
| Some(ptr::read(self.v.get_unchecked_mut(index))) | ||
| Some(ptr::read(self.v.get_unchecked_ptr(index))) | ||
| } | ||
@@ -728,3 +733,3 @@ } | ||
| self.v.set_len(new_len); | ||
| Some(ptr::read(self.v.get_unchecked_mut(new_len))) | ||
| Some(ptr::read(self.v.get_unchecked_ptr(new_len))) | ||
| } | ||
@@ -745,3 +750,3 @@ } | ||
| let elements = slice::from_raw_parts_mut( | ||
| self.v.get_unchecked_mut(index), | ||
| self.v.get_unchecked_ptr(index), | ||
| len - index); | ||
@@ -1031,9 +1036,6 @@ ptr::drop_in_place(elements); | ||
| let len = self.len(); | ||
| let mut tail = slice::from_raw_parts_mut(self.get_unchecked_mut(len), | ||
| A::capacity() - len); | ||
| let result = tail.write(data); | ||
| if let Ok(written) = result { | ||
| self.set_len(len + written); | ||
| } | ||
| result | ||
| let write_len = cmp::min(A::capacity() - len, data.len()); | ||
| ptr::copy_nonoverlapping(data.as_ptr(), self.get_unchecked_ptr(len), write_len); | ||
| self.set_len(len + write_len); | ||
| Ok(write_len) | ||
| } | ||
@@ -1040,0 +1042,0 @@ } |
Sorry, the diff of this file is not supported yet