summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-02-21 19:36:12 +0000
committerBram Moolenaar <Bram@vim.org>2022-02-21 19:36:12 +0000
commit4e889f98e95ac05d7c8bd3ee933ab4d47820fdfa (patch)
tree283ebbe59c424a9a0e9a061e70300fe94de49851
parent7842761bbaa7965fa52b5e3eadf162bc7fa6cdb1 (diff)
downloadvim-git-4e889f98e95ac05d7c8bd3ee933ab4d47820fdfa.tar.gz
patch 8.2.4436: crash with weird 'vartabstop' valuev8.2.4436
Problem: Crash with weird 'vartabstop' value. Solution: Check for running into the end of the line.
-rw-r--r--src/indent.c2
-rw-r--r--src/testdir/test_vartabs.vim12
-rw-r--r--src/version.c2
3 files changed, 16 insertions, 0 deletions
diff --git a/src/indent.c b/src/indent.c
index 95fc74ee4..95bda2072 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -1338,6 +1338,8 @@ change_indent(
new_cursor_col += (*mb_ptr2len)(ptr + new_cursor_col);
else
++new_cursor_col;
+ if (ptr[new_cursor_col] == NUL)
+ break;
vcol += lbr_chartabsize(ptr, ptr + new_cursor_col, (colnr_T)vcol);
}
vcol = last_vcol;
diff --git a/src/testdir/test_vartabs.vim b/src/testdir/test_vartabs.vim
index 156233dca..d21acfe3a 100644
--- a/src/testdir/test_vartabs.vim
+++ b/src/testdir/test_vartabs.vim
@@ -442,4 +442,16 @@ func Test_shiftwidth_vartabstop()
setlocal shiftwidth& vartabstop& tabstop&
endfunc
+func Test_vartabstop_latin1()
+ let save_encoding = &encoding
+ new
+ set encoding=iso8859
+ silent norm :se 
+ set vartabstop=400
+ norm i00 
+ bwipe!
+ let &encoding = save_encoding
+endfunc
+
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 9e2141194..6eae5e66f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4436,
+/**/
4435,
/**/
4434,