aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorJames McCoy <jamessan@jamessan.com>2017-06-06 07:34:25 -0400
committerJames McCoy <jamessan@jamessan.com>2017-06-06 07:39:33 -0400
commit6757c503bd6c8715cee38475c329f7daee7a760f (patch)
tree6ef25a272bc52470285f54e2d8e91eee43480e2c /src/nvim/eval.c
parent9281653233dbf7a365370883d35062fe940d7926 (diff)
downloadrneovim-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.c5
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;