mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
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 #1060)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
3,
|
||||
/**/
|
||||
2,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user