From 45085b9f8dc70f3b24eb9317b2d6bb2911ffb0a6 Mon Sep 17 00:00:00 2001 From: blake2-ppc Date: Sun, 4 Aug 2013 22:46:26 +0200 Subject: [PATCH] std: Fix bug in ChunkIter::idx ChunkIter .idx() didn't handle overflow correctly, even though it tried. --- src/libstd/vec.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs index fa1291c61e1b..0259b547ab3f 100644 --- a/src/libstd/vec.rs +++ b/src/libstd/vec.rs @@ -547,7 +547,10 @@ fn indexable(&self) -> uint { fn idx(&self, index: uint) -> Option<&'self [T]> { if index < self.indexable() { let lo = index * self.size; - Some(self.v.slice(lo, cmp::min(lo, self.v.len() - self.size) + self.size)) + let mut hi = lo + self.size; + if hi < lo || hi > self.v.len() { hi = self.v.len(); } + + Some(self.v.slice(lo, hi)) } else { None }