# HG changeset patch # User Bram Moolenaar # Date 1672843505 -3600 # Node ID 1102f477751855dcfea3df65691add201325eb62 # Parent 039dcfd1ee948b4d057d4604d76e38e1f5ecb698 patch 9.0.1143: invalid memory access with bad 'statusline' value Commit: https://github.com/vim/vim/commit/7b17eb4b063a234376c1ec909ee293e42cff290c Author: Bram Moolenaar Date: Wed Jan 4 14:31:49 2023 +0000 patch 9.0.1143: invalid memory access with bad 'statusline' value Problem: Invalid memory access with bad 'statusline' value. Solution: Avoid going over the NUL at the end. diff --git a/src/buffer.c b/src/buffer.c --- a/src/buffer.c +++ b/src/buffer.c @@ -4617,6 +4617,8 @@ build_stl_str_hl( #endif if (vim_strchr(STL_ALL, *s) == NULL) { + if (*s == NUL) // can happen with "%0" + break; s++; continue; } diff --git a/src/testdir/test_statusline.vim b/src/testdir/test_statusline.vim --- a/src/testdir/test_statusline.vim +++ b/src/testdir/test_statusline.vim @@ -440,6 +440,13 @@ func Test_statusline() set splitbelow& endfunc +func Test_statusline_trailing_percent_zero() + " this was causing illegal memory access + set laststatus=2 stl=%!%0 + call assert_fails('redraw', 'E15: Invalid expression: "%0"') + set laststatus& stl& +endfunc + func Test_statusline_visual() func CallWordcount() call wordcount() diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1143, +/**/ 1142, /**/ 1141,