]> git.lizzy.rs Git - rust.git/commitdiff
std: Fix bug in ChunkIter::idx
authorblake2-ppc <blake2-ppc>
Sun, 4 Aug 2013 20:46:26 +0000 (22:46 +0200)
committerblake2-ppc <blake2-ppc>
Tue, 6 Aug 2013 02:05:08 +0000 (04:05 +0200)
ChunkIter .idx() didn't handle overflow correctly, even though it tried.

src/libstd/vec.rs

index fa1291c61e1bec0a883db368d52a17d95cf7eacd..0259b547ab3f06040f812deaa55144fbb5bded3e 100644 (file)
@@ -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
         }