diff options
| author | CAD97 <cad97@cad97.com> | 2020-05-28 01:11:46 -0400 |
|---|---|---|
| committer | CAD97 <cad97@cad97.com> | 2020-05-28 01:33:28 -0400 |
| commit | cd6a8cae2aa07bd456a1816196e3c9aa2fcb72d6 (patch) | |
| tree | 48fa1d6cd5aedb13ae015637c760689bdab1ed1e | |
| parent | b1d1f256ef1902312803d3d1bd0235bfdf864aec (diff) | |
| download | rust-cd6a8cae2aa07bd456a1816196e3c9aa2fcb72d6.tar.gz rust-cd6a8cae2aa07bd456a1816196e3c9aa2fcb72d6.zip | |
FIx off-by-one in char::steps_between
| -rw-r--r-- | src/libcore/iter/range.rs | 2 | ||||
| -rw-r--r-- | src/libcore/tests/iter.rs | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/src/libcore/iter/range.rs b/src/libcore/iter/range.rs index 5db790e491c..fc4454ede35 100644 --- a/src/libcore/iter/range.rs +++ b/src/libcore/iter/range.rs @@ -408,7 +408,7 @@ unsafe impl Step for char { let start = start as u32; let end = end as u32; if start <= end { - let count = end - start + 1; + let count = end - start; if start < 0xD800 && 0xE000 <= end { usize::try_from(count - 0x800).ok() } else { diff --git a/src/libcore/tests/iter.rs b/src/libcore/tests/iter.rs index 6605249f180..c5d636ac8da 100644 --- a/src/libcore/tests/iter.rs +++ b/src/libcore/tests/iter.rs @@ -1939,7 +1939,9 @@ fn test_char_range() { assert!(('\0'..=char::MAX).rev().eq((0..=char::MAX as u32).filter_map(char::from_u32).rev())); assert_eq!(('\u{D7FF}'..='\u{E000}').count(), 2); + assert_eq!(('\u{D7FF}'..='\u{E000}').size_hint(), (2, Some(2))); assert_eq!(('\u{D7FF}'..'\u{E000}').count(), 1); + assert_eq!(('\u{D7FF}'..'\u{E000}').size_hint(), (1, Some(1))); } #[test] |
