diff options
Diffstat (limited to 'tvix/eval/src/builtins/mod.rs')
-rw-r--r-- | tvix/eval/src/builtins/mod.rs | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/tvix/eval/src/builtins/mod.rs b/tvix/eval/src/builtins/mod.rs index 53ad6f3f8e50..b5c7931768e9 100644 --- a/tvix/eval/src/builtins/mod.rs +++ b/tvix/eval/src/builtins/mod.rs @@ -869,12 +869,11 @@ mod pure_builtins { return Ok(Value::String("".into())); } - if len < 0 { - return Err(ErrorKind::NegativeLength { length: len }); - } - - let len = len as usize; - let end = cmp::min(beg + len, x.as_str().len()); + let end = if len < 0 { + x.as_str().len() as usize + } else { + cmp::min(beg + (len as usize), x.as_str().len()) + }; Ok(Value::String(x.as_str()[beg..end].into())) } |