Avoid subtract overflow when no ending index given. (#2764)

This commit is contained in:
Andrés N. Robalino 2020-11-24 05:50:38 -05:00 committed by GitHub
parent 5fb3df4054
commit c857e18c4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -159,12 +159,14 @@ fn action(input: &Value, options: &Substring, tag: impl Into<Tag>) -> Result<Val
"End must be greater than or equal to Start",
tag.span,
)),
Ordering::Less => Ok(UntaggedValue::string(
Ordering::Less => Ok(UntaggedValue::string(if end == isize::max_value() {
s.chars().skip(start as usize).collect::<String>()
} else {
s.chars()
.skip(start as usize)
.take((end - start) as usize)
.collect::<String>(),
)
.collect::<String>()
})
.into_value(tag)),
}
} else {
@ -330,6 +332,9 @@ mod tests {
expectation("and", (0, -3)),
expectation("andr", (0, -2)),
expectation("andre", (0, -1)),
// str substring [ -4 , _ ]
// str substring -4 ,
expectation("dres", (-4, isize::max_value())),
expectation("", (0, -110)),
expectation("", (6, 0)),
expectation("", (6, -1)),