aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorJames McCoy <jamessan@jamessan.com>2017-01-23 12:55:27 -0500
committerJames McCoy <jamessan@jamessan.com>2017-06-04 22:12:14 -0400
commit2fb0a62553480406a1b8ea314a528f00692c365a (patch)
treea65b7ee9c42ef6ff6a4875b20bdc101dfae141f8 /src/nvim/eval.c
parent55c93ea16438d6bacd287460e370a49c559af514 (diff)
downloadrneovim-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.c10
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 {