From 8b398ed8235c518dea5f29d80f8a337b7c6744cf Mon Sep 17 00:00:00 2001 From: diwic Date: Sat, 2 Jan 2016 22:36:50 +0100 Subject: [PATCH] Fix off-by-one in String::remove Obviously we can't remove the character one past the end of the String. And we can't today either - we'll just panic at char_at() instead - but if we're going to keep that assertion, we should at least have a correct assertion. --- src/libcollections/string.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libcollections/string.rs b/src/libcollections/string.rs index 931092f6924..d2cbcad875f 100644 --- a/src/libcollections/string.rs +++ b/src/libcollections/string.rs @@ -1029,8 +1029,8 @@ pub fn pop(&mut self) -> Option { /// /// # Panics /// - /// Panics if `idx` is larger than the `String`'s length, or if it does not - /// lie on a [`char`] boundary. + /// Panics if `idx` is larger than or equal to the `String`'s length, + /// or if it does not lie on a [`char`] boundary. /// /// [`char`]: ../primitive.char.html /// @@ -1049,7 +1049,7 @@ pub fn pop(&mut self) -> Option { #[stable(feature = "rust1", since = "1.0.0")] pub fn remove(&mut self, idx: usize) -> char { let len = self.len(); - assert!(idx <= len); + assert!(idx < len); let ch = self.char_at(idx); let next = idx + ch.len_utf8();