aboutsummaryrefslogtreecommitdiff
path: root/test/functional/lua/xdiff_spec.lua
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2024-09-26 16:10:11 +0100
committerLewis Russell <lewis6991@gmail.com>2024-09-30 11:51:33 +0100
commitc65646c2474d22948c604168a68f6626a645d1d2 (patch)
treefcf8e49ae06878638e0dacc34e08d7892ccc8524 /test/functional/lua/xdiff_spec.lua
parent20251be15a4ad3f6e7016450ca3338d52b2f0951 (diff)
downloadrneovim-c65646c2474d22948c604168a68f6626a645d1d2.tar.gz
rneovim-c65646c2474d22948c604168a68f6626a645d1d2.tar.bz2
rneovim-c65646c2474d22948c604168a68f6626a645d1d2.zip
fix(diff): use mmfile_t in linematch
Problem: Linematch used to use strchr to navigate a string, however strchr does not supoprt embedded NULs. Solution: Use `mmfile_t` instead of `char *` in linematch and introduce `strnchr()`. Also remove heap allocations from `matching_char_iwhite()` Fixes: #30505
Diffstat (limited to 'test/functional/lua/xdiff_spec.lua')
-rw-r--r--test/functional/lua/xdiff_spec.lua9
1 files changed, 9 insertions, 0 deletions
diff --git a/test/functional/lua/xdiff_spec.lua b/test/functional/lua/xdiff_spec.lua
index d5589c1f13..ed65193244 100644
--- a/test/functional/lua/xdiff_spec.lua
+++ b/test/functional/lua/xdiff_spec.lua
@@ -174,4 +174,13 @@ describe('xdiff bindings', function()
pcall_err(exec_lua, [[vim.diff('a', 'b', { on_hunk = true })]])
)
end)
+
+ it('can handle strings with embedded NUL characters (GitHub #30305)', function()
+ eq(
+ { { 0, 0, 1, 1 }, { 1, 0, 3, 2 } },
+ exec_lua(function()
+ return vim.diff('\n', '\0\n\n\nb', { linematch = true, result_type = 'indices' })
+ end)
+ )
+ end)
end)