comparison src/eval.c @ 23673:6d35bc0f161e v8.2.2378

patch 8.2.2378: Vim9: no error message for dividing by zero Commit: https://github.com/vim/vim/commit/99880f96cf444014d589fc1d99bb164deaba71ce Author: Bram Moolenaar <Bram@vim.org> Date: Wed Jan 20 21:23:14 2021 +0100 patch 8.2.2378: Vim9: no error message for dividing by zero Problem: Vim9: no error message for dividing by zero. Solution: Give an error message. (issue https://github.com/vim/vim/issues/7704)
author Bram Moolenaar <Bram@vim.org>
date Wed, 20 Jan 2021 21:30:04 +0100
parents b26bbc03126a
children e8c379b20765
comparison
equal deleted inserted replaced
23672:226d94848204 23673:6d35bc0f161e
61 varnumber_T 61 varnumber_T
62 num_divide(varnumber_T n1, varnumber_T n2) 62 num_divide(varnumber_T n1, varnumber_T n2)
63 { 63 {
64 varnumber_T result; 64 varnumber_T result;
65 65
66 if (n2 == 0) // give an error message? 66 if (n2 == 0)
67 { 67 {
68 if (in_vim9script())
69 emsg(_(e_divide_by_zero));
68 if (n1 == 0) 70 if (n1 == 0)
69 result = VARNUM_MIN; // similar to NaN 71 result = VARNUM_MIN; // similar to NaN
70 else if (n1 < 0) 72 else if (n1 < 0)
71 result = -VARNUM_MAX; 73 result = -VARNUM_MAX;
72 else 74 else
82 * Return "n1" modulus "n2", taking care of dividing by zero. 84 * Return "n1" modulus "n2", taking care of dividing by zero.
83 */ 85 */
84 varnumber_T 86 varnumber_T
85 num_modulus(varnumber_T n1, varnumber_T n2) 87 num_modulus(varnumber_T n1, varnumber_T n2)
86 { 88 {
87 // Give an error when n2 is 0? 89 if (n2 == 0 && in_vim9script())
90 emsg(_(e_divide_by_zero));
88 return (n2 == 0) ? 0 : (n1 % n2); 91 return (n2 == 0) ? 0 : (n1 % n2);
89 } 92 }
90 93
91 #if defined(EBCDIC) || defined(PROTO) 94 #if defined(EBCDIC) || defined(PROTO)
92 /* 95 /*