summaryrefslogtreecommitdiffstats
path: root/src/eval.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-01-22 18:34:57 +0100
committerBram Moolenaar <Bram@vim.org>2017-01-22 18:34:57 +0100
commit7a40ea2138102545848ea86a361f1b8dec7552b5 (patch)
tree28c03360f9bb2de0d7454f50ffccc1f33c75fe54 /src/eval.c
parent2b2207ba69c6b009e466a36eef0644ca723e16d3 (diff)
patch 8.0.0219: ubsan reports errors for overflowv8.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)
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/src/eval.c b/src/eval.c
index f70d03b369..5846936cc0 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -4109,21 +4109,12 @@ eval6(
{
if (n2 == 0) /* give an error message? */
{
-#ifdef FEAT_NUM64
if (n1 == 0)
- n1 = -0x7fffffffffffffffLL - 1; /* similar to NaN */
+ n1 = VARNUM_MIN; /* similar to NaN */
else if (n1 < 0)
- n1 = -0x7fffffffffffffffLL;
+ n1 = -VARNUM_MAX;
else
- n1 = 0x7fffffffffffffffLL;
-#else
- if (n1 == 0)
- n1 = -0x7fffffffL - 1L; /* similar to NaN */
- else if (n1 < 0)
- n1 = -0x7fffffffL;
- else
- n1 = 0x7fffffffL;
-#endif
+ n1 = VARNUM_MAX;
}
else
n1 = n1 / n2;