diff options
author | lonerover <pathfinder1644@yahoo.com> | 2017-07-15 21:02:15 +0800 |
---|---|---|
committer | lonerover <pathfinder1644@yahoo.com> | 2017-07-19 11:48:10 +0800 |
commit | b98ea04226d5ae7f2d8f9650101f87a848145ca4 (patch) | |
tree | ce03edf98f3e701eb67b48a40e1fe79ea61a0b03 /src | |
parent | 26124b480028354d7d81d93c0e45ca516effdaa6 (diff) | |
download | rneovim-b98ea04226d5ae7f2d8f9650101f87a848145ca4.tar.gz rneovim-b98ea04226d5ae7f2d8f9650101f87a848145ca4.tar.bz2 rneovim-b98ea04226d5ae7f2d8f9650101f87a848145ca4.zip |
vim-patch:8.0.0003
Problem: getwinvar() returns wrong Value of boolean and number options,
especially non big endian systems. (James McCoy)
Solution: Cast the pointer to long or int. (closes vim/vim#1060)
https://github.com/vim/vim/commit/789a5c0e3d27f09456678f0cfb6c1bd2d8ab4a35
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/option.c | 5 | ||||
-rw-r--r-- | src/nvim/testdir/test_bufwintabinfo.vim | 13 | ||||
-rw-r--r-- | src/nvim/version.c | 2 |
3 files changed, 18 insertions, 2 deletions
diff --git a/src/nvim/option.c b/src/nvim/option.c index 37b37e2859..40fae18aaf 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -7039,8 +7039,11 @@ dict_T *get_winbuf_options(const int bufopt) if (opt->flags & P_STRING) { tv_dict_add_str(d, opt->fullname, strlen(opt->fullname), *(const char **)varp); + } else if (opt->flags & P_NUM) { + tv_dict_add_nr(d, opt->fullname, strlen(opt->fullname), + *(long *)varp); } else { - tv_dict_add_nr(d, opt->fullname, strlen(opt->fullname), *varp); + tv_dict_add_nr(d, opt->fullname, strlen(opt->fullname), *(int *)varp); } } } diff --git a/src/nvim/testdir/test_bufwintabinfo.vim b/src/nvim/testdir/test_bufwintabinfo.vim index 5c916e2dd7..1c9350c416 100644 --- a/src/nvim/testdir/test_bufwintabinfo.vim +++ b/src/nvim/testdir/test_bufwintabinfo.vim @@ -87,9 +87,17 @@ function Test_get_buf_options() endfunc function Test_get_win_options() + if has('folding') + set foldlevel=999 + endif + set list let opts = getwinvar(1, '&') call assert_equal(v:t_dict, type(opts)) call assert_equal(0, opts.linebreak) + call assert_equal(1, opts.list) + if has('folding') + call assert_equal(999, opts.foldlevel) + endif if has('signs') call assert_equal('auto', opts.signcolumn) endif @@ -97,7 +105,12 @@ function Test_get_win_options() let opts = gettabwinvar(1, 1, '&') call assert_equal(v:t_dict, type(opts)) call assert_equal(0, opts.linebreak) + call assert_equal(1, opts.list) if has('signs') call assert_equal('auto', opts.signcolumn) endif + set list& + if has('folding') + set foldlevel=0 + endif endfunc diff --git a/src/nvim/version.c b/src/nvim/version.c index 2200c5e04a..a7d6885b4c 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -726,7 +726,7 @@ static const int included_patches[] = { 6, // 5 NA 4, - // 3, + 3, 2, 1, 0 |