mirror of
https://github.com/nushell/nushell.git
synced 2025-05-07 11:34:26 +02:00
fix ranges over zero-length input (#15062)
Fixes #15061 # User-Facing Changes Fixes panics when slicing empty input with inclusive ranges: ```nushell > random binary 0 | bytes at 0..0 Error: x Main thread panicked. |-> at crates/nu-protocol/src/value/range.rs:118:42 `-> attempt to subtract with overflow ```
This commit is contained in:
parent
26897b287c
commit
31e1f49cb6
@ -388,6 +388,13 @@ fn substring_by_negative_index() {
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn substring_of_empty_string() {
|
||||
let actual = nu!("'' | str substring ..0");
|
||||
assert_eq!(actual.err, "");
|
||||
assert_eq!(actual.out, "");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn str_reverse() {
|
||||
let actual = nu!(r#"
|
||||
|
@ -112,8 +112,9 @@ mod int_range {
|
||||
match self.end {
|
||||
Bound::Unbounded => Bound::Unbounded,
|
||||
Bound::Included(i) => match i {
|
||||
_ if len == 0 => Bound::Excluded(0),
|
||||
i if i < 0 => Bound::Excluded(len.saturating_sub((i + 1).unsigned_abs())),
|
||||
i => Bound::Included((len - 1).min(i.unsigned_abs())),
|
||||
i => Bound::Included((len.saturating_sub(1)).min(i.unsigned_abs())),
|
||||
},
|
||||
Bound::Excluded(i) => Bound::Excluded(match i {
|
||||
i if i < 0 => len.saturating_sub(i.unsigned_abs()),
|
||||
|
Loading…
Reference in New Issue
Block a user