Properly truncate utf-8 text

Simply slicing byte-wise produces illegal sequences --
throw away any leftover illegal sequences as well.
This commit is contained in:
Fayti1703 2021-09-28 13:40:27 +02:00
parent cedd865e24
commit 1018d1c46c

View file

@ -12,6 +12,8 @@ local music = Luigi(require 'ui.music')
local style = require 'ui.style'
local theme = require 'lib.luigi.theme.dark'
local utf8 = require("utf8")
layout:setStyle(style)
settings:setStyle(style)
sequence:setStyle(style)
@ -295,7 +297,12 @@ end)
settings.customseed:onChange(function()
if #settings.customseed.value > 20 then
settings.customseed.value = settings.customseed.value:sub(1, 20)
local str = settings.customseed.value:sub(1, 20)
local length, invalidPos = utf8.len(str)
if not length then -- produced invalid sequence, need to adjust
str = str:sub(1, invalidPos - 1)
end
settings.customseed.value = str
end
settings.seedcount.text = ("%s/20"):format(#settings.customseed.value)
end)
@ -344,4 +351,4 @@ function C:setStatus(text)
layout.status.text = text
end
return C
return C