diff options
author | James McCoy <jamessan@jamessan.com> | 2017-01-23 12:55:27 -0500 |
---|---|---|
committer | James McCoy <jamessan@jamessan.com> | 2017-06-04 22:12:14 -0400 |
commit | 2fb0a62553480406a1b8ea314a528f00692c365a (patch) | |
tree | a65b7ee9c42ef6ff6a4875b20bdc101dfae141f8 /src/nvim/eval.c | |
parent | 55c93ea16438d6bacd287460e370a49c559af514 (diff) | |
download | rneovim-2fb0a62553480406a1b8ea314a528f00692c365a.tar.gz rneovim-2fb0a62553480406a1b8ea314a528f00692c365a.tar.bz2 rneovim-2fb0a62553480406a1b8ea314a528f00692c365a.zip |
vim-patch:8.0.0219
Problem: Ubsan reports errors for integer overflow.
Solution: Define macros for minimum and maximum values. Select an
expression based on the value. (Mike Williams)
https://github.com/vim/vim/commit/7a40ea2138102545848ea86a361f1b8dec7552b5
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 19e23190b1..785643b5e0 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -4032,11 +4032,11 @@ eval6 ( else if (op == '/') { if (n2 == 0) { /* give an error message? */ if (n1 == 0) - n1 = -0x7fffffffffffffff - 1; /* similar to NaN */ + n1 = VARNUMBER_MIN; /* similar to NaN */ else if (n1 < 0) - n1 = -0x7fffffffffffffff; + n1 = -VARNUMBER_MAX; else - n1 = 0x7fffffffffffffff; + n1 = VARNUMBER_MAX; } else n1 = n1 / n2; } else { @@ -8539,8 +8539,8 @@ 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_MIN) { - rettv->vval.v_number = VARNUMBER_MIN; + if (f < -VARNUMBER_MAX) { + rettv->vval.v_number = -VARNUMBER_MAX; } else if (f > VARNUMBER_MAX) { rettv->vval.v_number = VARNUMBER_MAX; } else { |