diff options
| author | Giacomo Stevanato <giaco.stevanato@gmail.com> | 2021-02-19 12:16:12 +0100 |
|---|---|---|
| committer | Giacomo Stevanato <giaco.stevanato@gmail.com> | 2021-03-03 21:16:08 +0100 |
| commit | 8b9ac4d4155c74db5b317046033ab9c05a09e351 (patch) | |
| tree | a96c02aaef17b61c5d5baa527a677f236c193fa6 | |
| parent | 66a260617a88ed1ad55a46f03c5a90d5ad3004d3 (diff) | |
| download | rust-8b9ac4d4155c74db5b317046033ab9c05a09e351.tar.gz rust-8b9ac4d4155c74db5b317046033ab9c05a09e351.zip | |
Add test for underflow in specialized Zip's size_hint
| -rw-r--r-- | library/core/tests/iter/adapters/zip.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/library/core/tests/iter/adapters/zip.rs b/library/core/tests/iter/adapters/zip.rs index 1fce0951e36..a5977103929 100644 --- a/library/core/tests/iter/adapters/zip.rs +++ b/library/core/tests/iter/adapters/zip.rs @@ -245,3 +245,23 @@ fn test_double_ended_zip() { assert_eq!(it.next_back(), Some((3, 3))); assert_eq!(it.next(), None); } + +#[test] +fn test_issue_82282() { + fn overflowed_zip(arr: &[i32]) -> impl Iterator<Item = (i32, &())> { + static UNIT_EMPTY_ARR: [(); 0] = []; + + let mapped = arr.into_iter().map(|i| *i); + let mut zipped = mapped.zip(UNIT_EMPTY_ARR.iter()); + zipped.next(); + zipped + } + + let arr = [1, 2, 3]; + let zip = overflowed_zip(&arr).zip(overflowed_zip(&arr)); + + assert_eq!(zip.size_hint(), (0, Some(0))); + for _ in zip { + panic!(); + } +} |
