From 87c8baef5261b33b5fc49ff38875c7abe31d9150 Mon Sep 17 00:00:00 2001 From: Philipp Ossler Date: Thu, 22 Aug 2024 09:38:24 +0200 Subject: [PATCH] fix: substring() can handle exceeding length If substring() is called with a given length that is greater than the string then it returns the remaining characters from the start index. (cherry picked from commit 1f7478bd418af618b0023e4cf6da8db2ab566535) --- .../feel/impl/builtin/StringBuiltinFunctions.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/scala/org/camunda/feel/impl/builtin/StringBuiltinFunctions.scala b/src/main/scala/org/camunda/feel/impl/builtin/StringBuiltinFunctions.scala index 5308b9685..352bbe757 100644 --- a/src/main/scala/org/camunda/feel/impl/builtin/StringBuiltinFunctions.scala +++ b/src/main/scala/org/camunda/feel/impl/builtin/StringBuiltinFunctions.scala @@ -50,11 +50,11 @@ object StringBuiltinFunctions { private def substringFunction3 = builtinFunction( params = List("string", "start position", "length"), invoke = { case List(ValString(string), ValNumber(start), ValNumber(length)) => + val startIndex = stringIndex(string, start.intValue) + val endIndex = Math.min(startIndex + length.intValue, string.length) + ValString( - string.substring( - stringIndex(string, start.intValue), - stringIndex(string, start.intValue) + length.intValue - ) + string.substring(startIndex, endIndex) ) } )