aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-02-05 20:33:11 +0800
committerGitHub <noreply@github.com>2022-02-05 20:33:11 +0800
commit9d1deed6c83de70d43ffcb28f60f438849d76e5c (patch)
tree0f5e2cac5d1c437b610d24e11741378fd690ed11
parent806a7c976d78da2bf7a46499452b4a3e30fae798 (diff)
parente6cfd20b7fdeea2478c444e6f9b60c1e18ccdf00 (diff)
downloadrneovim-9d1deed6c83de70d43ffcb28f60f438849d76e5c.tar.gz
rneovim-9d1deed6c83de70d43ffcb28f60f438849d76e5c.tar.bz2
rneovim-9d1deed6c83de70d43ffcb28f60f438849d76e5c.zip
Merge pull request #17298 from zeertzjq/vim-8.2.4298
vim-patch:8.2.4298: divide by zero with huge tabstop value
-rw-r--r--src/nvim/option.c2
-rw-r--r--src/nvim/testdir/test_vartabs.vim10
2 files changed, 11 insertions, 1 deletions
diff --git a/src/nvim/option.c b/src/nvim/option.c
index 2c4c4819ea..b9fed8b378 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -7551,7 +7551,7 @@ bool tabstop_set(char_u *var, long **array)
int n = atoi((char *)cp);
// Catch negative values, overflow and ridiculous big values.
- if (n < 0 || n > TABSTOP_MAX) {
+ if (n <= 0 || n > TABSTOP_MAX) {
semsg(_(e_invarg2), cp);
XFREE_CLEAR(*array);
return false;
diff --git a/src/nvim/testdir/test_vartabs.vim b/src/nvim/testdir/test_vartabs.vim
index 46e0d62313..d05008d2dd 100644
--- a/src/nvim/testdir/test_vartabs.vim
+++ b/src/nvim/testdir/test_vartabs.vim
@@ -135,6 +135,16 @@ func Test_vartabs()
bwipeout!
endfunc
+func Test_retab_invalid_arg()
+ new
+ call setline(1, "\ttext")
+ retab 0
+ call assert_fails("retab -8", 'E487: Argument must be positive')
+ call assert_fails("retab 10000", 'E475:')
+ call assert_fails("retab 720575940379279360", 'E475:')
+ bwipe!
+endfunc
+
func! Test_vartabs_breakindent()
if !exists("+breakindent")
return