patch 8.2.4298: divide by zero with huge tabstop value

Problem:    Divide by zero with huge tabstop value.
Solution:   Reject tabstop value that overflows to zero.
diff --git a/src/indent.c b/src/indent.c
index b62308d..9b137b0 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -71,7 +71,7 @@
 	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_invalid_argument_str), cp);
 	    vim_free(*array);
diff --git a/src/testdir/test_vartabs.vim b/src/testdir/test_vartabs.vim
index 3b8a9ce..156233d 100644
--- a/src/testdir/test_vartabs.vim
+++ b/src/testdir/test_vartabs.vim
@@ -146,6 +146,16 @@
   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()
   CheckOption breakindent
   new
diff --git a/src/version.c b/src/version.c
index 95f2b5f..7df9eaa 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4298,
+/**/
     4297,
 /**/
     4296,