diff options
-rw-r--r-- | runtime/doc/change.txt | 8 | ||||
-rw-r--r-- | runtime/doc/cmdline.txt | 3 | ||||
-rw-r--r-- | runtime/doc/tags | 1 | ||||
-rw-r--r-- | src/ex_cmds.c | 7 | ||||
-rw-r--r-- | src/testdir/test_substitute.vim | 1 | ||||
-rw-r--r-- | src/version.c | 2 |
6 files changed, 17 insertions, 5 deletions
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt index 65da9a7c6b..dccaa44c89 100644 --- a/runtime/doc/change.txt +++ b/runtime/doc/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 9.0. Last change: 2023 Sep 19 +*change.txt* For Vim version 9.0. Last change: 2023 Nov 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -644,9 +644,9 @@ For other systems the tmpnam() library function is used. current line only. When [count] is given, replace in [count] lines, starting with the last line in [range]. When [range] is omitted start in the current line. - *E939* - [count] must be a positive number. Also see - |cmdline-ranges|. + *E939* *E1510* + [count] must be a positive number (max 2147483647) + Also see |cmdline-ranges|. See |:s_flags| for [flags]. The delimiter doesn't need to be /, see diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt index c5d0096ddb..cbcf0ad274 100644 --- a/runtime/doc/cmdline.txt +++ b/runtime/doc/cmdline.txt @@ -1,4 +1,4 @@ -*cmdline.txt* For Vim version 9.0. Last change: 2023 May 20 +*cmdline.txt* For Vim version 9.0. Last change: 2023 Nov 15 VIM REFERENCE MANUAL by Bram Moolenaar @@ -362,6 +362,7 @@ terminals) A positive number represents the absolute index of an entry as it is given in the first column of a :history listing. This number remains fixed even if other entries are deleted. + (see |E1510|) A negative number means the relative position of an entry, counted from the newest entry (which has index -1) backwards. diff --git a/runtime/doc/tags b/runtime/doc/tags index f49061aa21..0021ddb127 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -4514,6 +4514,7 @@ E1507 builtin.txt /*E1507* E1508 editing.txt /*E1508* E1509 editing.txt /*E1509* E151 helphelp.txt /*E151* +E1510 change.txt /*E1510* E152 helphelp.txt /*E152* E153 helphelp.txt /*E153* E154 helphelp.txt /*E154* diff --git a/src/ex_cmds.c b/src/ex_cmds.c index 3544092d65..c5f912e7ee 100644 --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -3993,6 +3993,13 @@ ex_substitute(exarg_T *eap) emsg(_(e_positive_count_required)); return; } + else if (i >= INT_MAX) + { + char buf[20]; + vim_snprintf(buf, sizeof(buf), "%ld", i); + semsg(_(e_val_too_large), buf); + return; + } eap->line1 = eap->line2; eap->line2 += i - 1; if (eap->line2 > curbuf->b_ml.ml_line_count) diff --git a/src/testdir/test_substitute.vim b/src/testdir/test_substitute.vim index b99d0e0058..3ed159799f 100644 --- a/src/testdir/test_substitute.vim +++ b/src/testdir/test_substitute.vim @@ -206,6 +206,7 @@ func Test_substitute_count() call assert_equal(['foo foo', 'foo foo', 'foo foo', 'bar foo', 'bar foo'], \ getline(1, '$')) + call assert_fails('s/./b/2147483647', 'E1510:') bwipe! endfunc diff --git a/src/version.c b/src/version.c index 684f3acf4c..16db8f2312 100644 --- a/src/version.c +++ b/src/version.c @@ -705,6 +705,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2108, +/**/ 2107, /**/ 2106, |