From 3aab052ecc01db201d3f6971572bea2ffba0ec69 Mon Sep 17 00:00:00 2001 From: Jayme Bird Date: Fri, 21 Oct 2022 09:06:10 +0100 Subject: [PATCH] fix: use rune for length over string --- builtins.go | 6 ++---- testdata/builtin_substr_multibyte.golden | 1 + testdata/builtin_substr_multibyte.jsonnet | 1 + testdata/builtin_substr_multibyte.linter.golden | 0 4 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 testdata/builtin_substr_multibyte.golden create mode 100644 testdata/builtin_substr_multibyte.jsonnet create mode 100644 testdata/builtin_substr_multibyte.linter.golden diff --git a/builtins.go b/builtins.go index 0e6812d..eaee396 100644 --- a/builtins.go +++ b/builtins.go @@ -1179,7 +1179,7 @@ func builtinSubstr(i *interpreter, inputStr, inputFrom, inputLen value) (value, } fromInt := int(fromV.value) - strStr := strV.getGoString() + strStr := strV.getRunes() endIndex := fromInt + lenInt @@ -1190,9 +1190,7 @@ func builtinSubstr(i *interpreter, inputStr, inputFrom, inputLen value) (value, if fromInt > len(strStr) { return makeValueString(""), nil } - - runes := []rune(strStr) - return makeValueString(string(runes[fromInt:endIndex])), nil + return makeValueString(string(strStr[fromInt:endIndex])), nil } func builtinSplitLimit(i *interpreter, strv, cv, maxSplitsV value) (value, error) { diff --git a/testdata/builtin_substr_multibyte.golden b/testdata/builtin_substr_multibyte.golden new file mode 100644 index 0000000..19ea4ad --- /dev/null +++ b/testdata/builtin_substr_multibyte.golden @@ -0,0 +1 @@ +"🤩" diff --git a/testdata/builtin_substr_multibyte.jsonnet b/testdata/builtin_substr_multibyte.jsonnet new file mode 100644 index 0000000..ea7b51f --- /dev/null +++ b/testdata/builtin_substr_multibyte.jsonnet @@ -0,0 +1 @@ +std.substr("🤩", 0, 5) \ No newline at end of file diff --git a/testdata/builtin_substr_multibyte.linter.golden b/testdata/builtin_substr_multibyte.linter.golden new file mode 100644 index 0000000..e69de29