diff options
author | James McCoy <jamessan@jamessan.com> | 2017-06-06 07:34:25 -0400 |
---|---|---|
committer | James McCoy <jamessan@jamessan.com> | 2017-06-06 07:39:33 -0400 |
commit | 6757c503bd6c8715cee38475c329f7daee7a760f (patch) | |
tree | 6ef25a272bc52470285f54e2d8e91eee43480e2c /src/nvim/eval.c | |
parent | 9281653233dbf7a365370883d35062fe940d7926 (diff) | |
download | rneovim-6757c503bd6c8715cee38475c329f7daee7a760f.tar.gz rneovim-6757c503bd6c8715cee38475c329f7daee7a760f.tar.bz2 rneovim-6757c503bd6c8715cee38475c329f7daee7a760f.zip |
vim-patch:8.0.0614
Problem: float2nr() is not exactly right.
Solution: Make float2nr() more accurate. Turn test64 into a new style test.
(Hirohito Higashi, closes vim/vim#1688)
https://github.com/vim/vim/commit/863e80b4451b5102b41bebf9ddca3a420de746fa
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 4856315786..57ec5d1b47 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -6,6 +6,7 @@ */ #include <assert.h> +#include <float.h> #include <inttypes.h> #include <stdarg.h> #include <string.h> @@ -8562,9 +8563,9 @@ static void f_float2nr(typval_T *argvars, typval_T *rettv, FunPtr fptr) float_T f; if (tv_get_float_chk(argvars, &f)) { - if (f < -VARNUMBER_MAX) { + if (f <= -VARNUMBER_MAX + DBL_EPSILON) { rettv->vval.v_number = -VARNUMBER_MAX; - } else if (f > VARNUMBER_MAX) { + } else if (f >= VARNUMBER_MAX - DBL_EPSILON) { rettv->vval.v_number = VARNUMBER_MAX; } else { rettv->vval.v_number = (varnumber_T)f; |