Mercurial > vim
diff src/eval.c @ 2441:620a42739426 vim73
Improvements for VMS. (Zoltan Arpadffy)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Fri, 30 Jul 2010 22:29:41 +0200 |
parents | 2533a507001f |
children | a88237afdb20 |
line wrap: on
line diff
--- 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 {