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:
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()