diff options
author | Bram Moolenaar <Bram@vim.org> | 2010-07-30 22:29:41 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2010-07-30 22:29:41 +0200 |
commit | f878bcfb2e611d792d1acef7019ff6c40e8933d5 (patch) | |
tree | d48fad20e6ce9c91c7558c0792e2551c0b805f41 /src/eval.c | |
parent | 68392724b8be7ff25767b8fdda65da8082b8d95c (diff) | |
download | vim-git-f878bcfb2e611d792d1acef7019ff6c40e8933d5.tar.gz |
Improvements for VMS. (Zoltan Arpadffy)
Diffstat (limited to 'src/eval.c')
-rw-r--r-- | src/eval.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c index f1285ca39..8a26b6690 100644 --- a/src/eval.c +++ b/src/eval.c @@ -4802,9 +4802,24 @@ eval6(arg, rettv, evaluate, want_string) f1 = f1 * f2; else if (op == '/') { +# ifdef VMS + /* VMS crashes on divide by zero, work around it */ + if (f2 == 0.0) + { + if (f1 == 0) + f1 = -0x7fffffffL - 1L; /* similar to NaN */ + else if (f1 < 0) + f1 = -0x7fffffffL; + else + f1 = 0x7fffffffL; + } + else + f1 = f1 / f2; +# else /* We rely on the floating point library to handle divide * by zero to result in "inf" and not a crash. */ f1 = f1 / f2; +# endif } else { |