Mercurial > vim
changeset 10887:40939b171432 v8.0.0333
patch 8.0.0333: illegal memory access when 'complete' ends in a backslash
commit https://github.com/vim/vim/commit/226c53429109f24e31c17016aedfd7fbf7a9aa50
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Feb 17 14:53:15 2017 +0100
patch 8.0.0333: illegal memory access when 'complete' ends in a backslash
Problem: Illegal memory access when 'complete' ends in a backslash.
Solution: Check for trailing backslash. (Dominique Pelle, closes https://github.com/vim/vim/issues/1478)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Fri, 17 Feb 2017 15:00:05 +0100 |
parents | 5b3545b55610 |
children | 46008b393de1 |
files | src/option.c src/testdir/test_options.vim src/version.c |
diffstat | 3 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/option.c +++ b/src/option.c @@ -7017,7 +7017,7 @@ did_set_string_option( /* skip optional filename after 'k' and 's' */ while (*s && *s != ',' && *s != ' ') { - if (*s == '\\') + if (*s == '\\' && s[1] != NUL) ++s; ++s; }
--- a/src/testdir/test_options.vim +++ b/src/testdir/test_options.vim @@ -136,6 +136,15 @@ func Test_thesaurus() call Check_dir_option('thesaurus') endfun +func Test_complete() + " Trailing single backslash used to cause invalid memory access. + set complete=s\ + new + call feedkeys("i\<C-N>\<Esc>", 'xt') + bwipe! + set complete& +endfun + func Test_set_completion() call feedkeys(":set di\<C-A>\<C-B>\"\<CR>", 'tx') call assert_equal('"set dictionary diff diffexpr diffopt digraph directory display', @:)