mirror of
https://github.com/neovim/neovim.git
synced 2025-12-06 14:42:35 +00:00
fix(lua): make vim.str_utfindex and vim.str_byteindex handle NUL bytes
fixes #16290
This commit is contained in:
@@ -158,17 +158,20 @@ describe('lua stdlib', function()
|
||||
end)
|
||||
|
||||
it("vim.str_utfindex/str_byteindex", function()
|
||||
exec_lua([[_G.test_text = "xy åäö ɧ 汉语 ↥ 🤦x🦄 å بِيَّ"]])
|
||||
local indicies32 = {[0]=0,1,2,3,5,7,9,10,12,13,16,19,20,23,24,28,29,33,34,35,37,38,40,42,44,46,48}
|
||||
local indicies16 = {[0]=0,1,2,3,5,7,9,10,12,13,16,19,20,23,24,28,28,29,33,33,34,35,37,38,40,42,44,46,48}
|
||||
exec_lua([[_G.test_text = "xy åäö ɧ 汉语 ↥ 🤦x🦄 å بِيَّ\000ъ"]])
|
||||
local indicies32 = {[0]=0,1,2,3,5,7,9,10,12,13,16,19,20,23,24,28,29,33,34,35,37,38,40,42,44,46,48,49,51}
|
||||
local indicies16 = {[0]=0,1,2,3,5,7,9,10,12,13,16,19,20,23,24,28,28,29,33,33,34,35,37,38,40,42,44,46,48,49,51}
|
||||
for i,k in pairs(indicies32) do
|
||||
eq(k, exec_lua("return vim.str_byteindex(_G.test_text, ...)", i), i)
|
||||
end
|
||||
for i,k in pairs(indicies16) do
|
||||
eq(k, exec_lua("return vim.str_byteindex(_G.test_text, ..., true)", i), i)
|
||||
end
|
||||
matches(": index out of range$", pcall_err(exec_lua, "return vim.str_byteindex(_G.test_text, ...)", #indicies32 + 1))
|
||||
matches(": index out of range$", pcall_err(exec_lua, "return vim.str_byteindex(_G.test_text, ..., true)", #indicies16 + 1))
|
||||
local i32, i16 = 0, 0
|
||||
for k = 0,48 do
|
||||
local len = 51
|
||||
for k = 0,len do
|
||||
if indicies32[i32] < k then
|
||||
i32 = i32 + 1
|
||||
end
|
||||
@@ -180,6 +183,7 @@ describe('lua stdlib', function()
|
||||
end
|
||||
eq({i32, i16}, exec_lua("return {vim.str_utfindex(_G.test_text, ...)}", k), k)
|
||||
end
|
||||
matches(": index out of range$", pcall_err(exec_lua, "return vim.str_utfindex(_G.test_text, ...)", len + 1))
|
||||
end)
|
||||
|
||||
it("vim.str_utf_start", function()
|
||||
|
||||
Reference in New Issue
Block a user