summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-09-12 19:51:11 +0200
committerBram Moolenaar <Bram@vim.org>2016-09-12 19:51:11 +0200
commit789a5c0e3d27f09456678f0cfb6c1bd2d8ab4a35 (patch)
tree875f09d9d7041be17b9ccf6e1aaaf5969391bd57
parentb56e7ff0dbbfa85361bdbc5b4a86ff8b57a7acbb (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.c4
-rw-r--r--src/testdir/test_bufwintabinfo.vim13
-rw-r--r--src/version.c2
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,