fix utf8.sub behaviour

This commit is contained in:
MihailRis 2026-04-20 16:43:27 +03:00
parent 66796019af
commit 3147897709

View file

@ -57,7 +57,12 @@ static int l_sub(lua::State* L) {
if (lua::gettop(L) >= 3) {
end = std::max(0, static_cast<int>(lua::tointeger(L, 3) - 1));
}
return lua::pushstring(L, util::u32str2str_utf8(string.substr(start, end)));
return lua::pushstring(
L,
util::u32str2str_utf8(
string.substr(start, (end >= start ? end - start + 1 : 0))
)
);
}
static int l_upper(lua::State* L) {