diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-09-12 19:51:11 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-09-12 19:51:11 +0200 |
commit | 789a5c0e3d27f09456678f0cfb6c1bd2d8ab4a35 (patch) | |
tree | 875f09d9d7041be17b9ccf6e1aaaf5969391bd57 | |
parent | b56e7ff0dbbfa85361bdbc5b4a86ff8b57a7acbb (diff) |
patch 8.0.0003v8.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 #1060)
-rw-r--r-- | src/option.c | 4 | ||||
-rw-r--r-- | src/testdir/test_bufwintabinfo.vim | 13 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 18 insertions, 1 deletions
diff --git a/src/option.c b/src/option.c index 93e3c391fd..2d5f3b83a9 100644 --- a/src/option.c +++ b/src/option.c @@ -12363,8 +12363,10 @@ get_winbuf_options(int bufopt) { if (opt->flags & P_STRING) dict_add_nr_str(d, opt->fullname, 0L, *(char_u **)varp); + else if (opt->flags & P_NUM) + dict_add_nr_str(d, opt->fullname, *(long *)varp, NULL); else - dict_add_nr_str(d, opt->fullname, *varp, NULL); + dict_add_nr_str(d, opt->fullname, *(int *)varp, NULL); } } } diff --git a/src/testdir/test_bufwintabinfo.vim b/src/testdir/test_bufwintabinfo.vim index 5c916e2dd7..1c9350c416 100644 --- a/src/testdir/test_bufwintabinfo.vim +++ b/src/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/version.c b/src/version.c index 1b932fae43..dcf02c288c 100644 --- a/src/version.c +++ b/src/version.c @@ -765,6 +765,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3, +/**/ 2, /**/ 1, |