diff options
author | Lewis Russell <lewis6991@gmail.com> | 2024-09-26 16:10:11 +0100 |
---|---|---|
committer | Lewis Russell <lewis6991@gmail.com> | 2024-09-30 11:51:33 +0100 |
commit | c65646c2474d22948c604168a68f6626a645d1d2 (patch) | |
tree | fcf8e49ae06878638e0dacc34e08d7892ccc8524 /test/functional/lua/xdiff_spec.lua | |
parent | 20251be15a4ad3f6e7016450ca3338d52b2f0951 (diff) | |
download | rneovim-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.lua | 9 |
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) |