diff options
| author | Tommy M. McGuire <mcguire@crsr.net> | 2013-03-01 17:06:37 -0600 |
|---|---|---|
| committer | Corey Richardson <corey@octayn.net> | 2013-05-16 20:59:06 -0400 |
| commit | 5948d8a8260e0c3da4f58f7bd1081add1fd63e58 (patch) | |
| tree | d909ebda288beda06fb7be820a0ae0a454eb310c | |
| parent | 2264c7927dbfc6124b9b756de47200ded1ca76ac (diff) | |
| download | rust-5948d8a8260e0c3da4f58f7bd1081add1fd63e58.tar.gz rust-5948d8a8260e0c3da4f58f7bd1081add1fd63e58.zip | |
Ensure reverse_part does not access outside given vector
| -rw-r--r-- | src/libcore/vec.rs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/libcore/vec.rs b/src/libcore/vec.rs index 764e329a0aa..21d12e9d1a4 100644 --- a/src/libcore/vec.rs +++ b/src/libcore/vec.rs @@ -1450,6 +1450,9 @@ pub fn reverse<T>(v: &mut [T]) { * * Reverse the elements in the vector between `start` and `end - 1`. * + * If either start or end do not represent valid positions in the vector, the + * vector is returned unchanged. + * * # Arguments * * * `v` - The mutable vector to be modified @@ -1469,13 +1472,10 @@ pub fn reverse<T>(v: &mut [T]) { * ~~~ * * `v` now contains `[1,4,3,2,5]`. - * - * # Safety note - * - * Behavior is undefined if `start` or `end` do not represent valid - * positions in `v`. */ pub fn reverse_part<T>(v: &mut [T], start: uint, end : uint) { + let sz = v.len(); + if start >= sz || end > sz { return; } let mut i = start; let mut j = end - 1; while i < j { |
