neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 9397fdafe13b6dd3d7efd7c55e513124f8dc0893
parent 44f1dbee0da3c516541434774b44f74a627b8e3f
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sat, 19 Apr 2025 07:22:39 +0800

Merge pull request #33519 from zeertzjq/vim-9.1.1314

vim-patch:9.1.{1314,1318}: max allowed string width too small
Diffstat:
Mruntime/doc/builtin.txt | 3++-
Mruntime/lua/vim/_meta/vimfn.lua | 3++-
Msrc/nvim/eval.lua | 3++-
Msrc/nvim/strings.c | 2+-
Mtest/old/testdir/test_format.vim | 12++++++------
5 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt @@ -7395,7 +7395,8 @@ printf({fmt}, {expr1} ...) *printf()* < 1.41 You will get an overflow error |E1510|, when the field-width - or precision will result in a string longer than 6400 chars. + or precision will result in a string longer than 1 MB + (1024*1024 = 1048576) chars. *E1500* You cannot mix positional and non-positional arguments: >vim diff --git a/runtime/lua/vim/_meta/vimfn.lua b/runtime/lua/vim/_meta/vimfn.lua @@ -6720,7 +6720,8 @@ function vim.fn.prevnonblank(lnum) end --- < 1.41 --- --- You will get an overflow error |E1510|, when the field-width ---- or precision will result in a string longer than 6400 chars. +--- or precision will result in a string longer than 1 MB +--- (1024*1024 = 1048576) chars. --- --- *E1500* --- You cannot mix positional and non-positional arguments: >vim diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua @@ -8169,7 +8169,8 @@ M.funcs = { < 1.41 You will get an overflow error |E1510|, when the field-width - or precision will result in a string longer than 6400 chars. + or precision will result in a string longer than 1 MB + (1024*1024 = 1048576) chars. *E1500* You cannot mix positional and non-positional arguments: >vim diff --git a/src/nvim/strings.c b/src/nvim/strings.c @@ -1027,7 +1027,7 @@ static void format_overflow_error(const char *pstart) xfree(argcopy); } -enum { MAX_ALLOWED_STRING_WIDTH = 6400, }; +enum { MAX_ALLOWED_STRING_WIDTH = 1048576, }; // 1MiB static int get_unsigned_int(const char *pstart, const char **p, unsigned *uj, bool overflow_err) { diff --git a/test/old/testdir/test_format.vim b/test/old/testdir/test_format.vim @@ -334,13 +334,13 @@ func Test_printf_pos_errors() call CheckLegacyAndVim9Failure(["call printf('%1$*123456789$.*987654321$d', 5)"], "E1510:") call CheckLegacyAndVim9Failure(["call printf('%123456789$*1$.*987654321$d', 5)"], "E1510:") - call CheckLegacyAndVim9Failure(["call printf('%1$*2$.*1$d', 5, 9999)"], "E1510:") - call CheckLegacyAndVim9Failure(["call printf('%1$*1$.*2$d', 5, 9999)"], "E1510:") - call CheckLegacyAndVim9Failure(["call printf('%2$*3$.*1$d', 5, 9123, 9321)"], "E1510:") - call CheckLegacyAndVim9Failure(["call printf('%1$*2$.*3$d', 5, 9123, 9321)"], "E1510:") - call CheckLegacyAndVim9Failure(["call printf('%2$*1$.*3$d', 5, 9123, 9312)"], "E1510:") + call CheckLegacyAndVim9Failure(["call printf('%1$*2$.*1$d', 5, 9999999)"], "E1510:") + call CheckLegacyAndVim9Failure(["call printf('%1$*1$.*2$d', 5, 9999999)"], "E1510:") + call CheckLegacyAndVim9Failure(["call printf('%2$*3$.*1$d', 5, 9999123, 9999321)"], "E1510:") + call CheckLegacyAndVim9Failure(["call printf('%1$*2$.*3$d', 5, 9999123, 9999321)"], "E1510:") + call CheckLegacyAndVim9Failure(["call printf('%2$*1$.*3$d', 5, 9999123, 9999312)"], "E1510:") - call CheckLegacyAndVim9Failure(["call printf('%1$*2$d', 5, 9999)"], "E1510:") + call CheckLegacyAndVim9Failure(["call printf('%1$*2$d', 5, 9999999)"], "E1510:") endfunc func Test_printf_pos_64bit()