summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0990
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0990')
-rw-r--r--data/vim/patches/8.1.0990221
1 files changed, 0 insertions, 221 deletions
diff --git a/data/vim/patches/8.1.0990 b/data/vim/patches/8.1.0990
deleted file mode 100644
index 14269031c..000000000
--- a/data/vim/patches/8.1.0990
+++ /dev/null
@@ -1,221 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.0990
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 8.1.0990
-Problem: Floating point exception with "%= 0" and "/= 0".
-Solution: Avoid dividing by zero. (Dominique Pelle, closes #4058)
-Files: src/eval.c, src/testdir/test_vimscript.vim
-
-
-*** ../vim-8.1.0989/src/eval.c 2019-02-20 22:04:28.823721308 +0100
---- src/eval.c 2019-03-02 11:55:06.947996350 +0100
-***************
-*** 253,258 ****
---- 253,291 ----
- /* for VIM_VERSION_ defines */
- #include "version.h"
-
-+ /*
-+ * Return "n1" divided by "n2", taking care of dividing by zero.
-+ */
-+ static varnumber_T
-+ num_divide(varnumber_T n1, varnumber_T n2)
-+ {
-+ varnumber_T result;
-+
-+ if (n2 == 0) // give an error message?
-+ {
-+ if (n1 == 0)
-+ result = VARNUM_MIN; // similar to NaN
-+ else if (n1 < 0)
-+ result = -VARNUM_MAX;
-+ else
-+ result = VARNUM_MAX;
-+ }
-+ else
-+ result = n1 / n2;
-+
-+ return result;
-+ }
-+
-+ /*
-+ * Return "n1" modulus "n2", taking care of dividing by zero.
-+ */
-+ static varnumber_T
-+ num_modulus(varnumber_T n1, varnumber_T n2)
-+ {
-+ // Give an error when n2 is 0?
-+ return (n2 == 0) ? 0 : (n1 % n2);
-+ }
-+
-
- #if defined(EBCDIC) || defined(PROTO)
- /*
-***************
-*** 1758,1765 ****
- case '+': n = numval + n; break;
- case '-': n = numval - n; break;
- case '*': n = numval * n; break;
-! case '/': n = numval / n; break;
-! case '%': n = numval % n; break;
- }
- }
- else if (opt_type == 0 && stringval != NULL) // string
---- 1791,1798 ----
- case '+': n = numval + n; break;
- case '-': n = numval - n; break;
- case '*': n = numval * n; break;
-! case '/': n = (long)num_divide(numval, n); break;
-! case '%': n = (long)num_modulus(numval, n); break;
- }
- }
- else if (opt_type == 0 && stringval != NULL) // string
-***************
-*** 2538,2545 ****
- case '+': n += tv_get_number(tv2); break;
- case '-': n -= tv_get_number(tv2); break;
- case '*': n *= tv_get_number(tv2); break;
-! case '/': n /= tv_get_number(tv2); break;
-! case '%': n %= tv_get_number(tv2); break;
- }
- clear_tv(tv1);
- tv1->v_type = VAR_NUMBER;
---- 2571,2578 ----
- case '+': n += tv_get_number(tv2); break;
- case '-': n -= tv_get_number(tv2); break;
- case '*': n *= tv_get_number(tv2); break;
-! case '/': n = num_divide(n, tv_get_number(tv2)); break;
-! case '%': n = num_modulus(n, tv_get_number(tv2)); break;
- }
- clear_tv(tv1);
- tv1->v_type = VAR_NUMBER;
-***************
-*** 4113,4138 ****
- if (op == '*')
- n1 = n1 * n2;
- else if (op == '/')
-! {
-! if (n2 == 0) /* give an error message? */
-! {
-! if (n1 == 0)
-! n1 = VARNUM_MIN; /* similar to NaN */
-! else if (n1 < 0)
-! n1 = -VARNUM_MAX;
-! else
-! n1 = VARNUM_MAX;
-! }
-! else
-! n1 = n1 / n2;
-! }
- else
-! {
-! if (n2 == 0) /* give an error message? */
-! n1 = 0;
-! else
-! n1 = n1 % n2;
-! }
- rettv->v_type = VAR_NUMBER;
- rettv->vval.v_number = n1;
- }
---- 4146,4155 ----
- if (op == '*')
- n1 = n1 * n2;
- else if (op == '/')
-! n1 = num_divide(n1, n2);
- else
-! n1 = num_modulus(n1, n2);
-!
- rettv->v_type = VAR_NUMBER;
- rettv->vval.v_number = n1;
- }
-*** ../vim-8.1.0989/src/testdir/test_vimscript.vim 2019-02-12 22:28:27.845232664 +0100
---- src/testdir/test_vimscript.vim 2019-03-02 11:49:05.814627589 +0100
-***************
-*** 21,27 ****
- "
- " Create a script that consists of the body of the function a:funcname.
- " Replace any ":return" by a ":finish", any argument variable by a global
-! " variable, and and every ":call" by a ":source" for the next following argument
- " in the variable argument list. This function is useful if similar tests are
- " to be made for a ":return" from a function call or a ":finish" in a script
- " file.
---- 21,27 ----
- "
- " Create a script that consists of the body of the function a:funcname.
- " Replace any ":return" by a ":finish", any argument variable by a global
-! " variable, and every ":call" by a ":source" for the next following argument
- " in the variable argument list. This function is useful if similar tests are
- " to be made for a ":return" from a function call or a ":finish" in a script
- " file.
-***************
-*** 1457,1462 ****
---- 1457,1499 ----
- let x .= 'n'
- call assert_equal('2n', x)
-
-+ " Test special cases: division or modulus with 0.
-+ let x = 1
-+ let x /= 0
-+ if has('num64')
-+ call assert_equal(0x7FFFFFFFFFFFFFFF, x)
-+ else
-+ call assert_equal(0x7fffffff, x)
-+ endif
-+
-+ let x = -1
-+ let x /= 0
-+ if has('num64')
-+ call assert_equal(-0x7FFFFFFFFFFFFFFF, x)
-+ else
-+ call assert_equal(-0x7fffffff, x)
-+ endif
-+
-+ let x = 0
-+ let x /= 0
-+ if has('num64')
-+ call assert_equal(-0x7FFFFFFFFFFFFFFF - 1, x)
-+ else
-+ call assert_equal(-0x7FFFFFFF - 1, x)
-+ endif
-+
-+ let x = 1
-+ let x %= 0
-+ call assert_equal(0, x)
-+
-+ let x = -1
-+ let x %= 0
-+ call assert_equal(0, x)
-+
-+ let x = 0
-+ let x %= 0
-+ call assert_equal(0, x)
-+
- " Test for string
- let x = 'str'
- let x .= 'ing'
-*** ../vim-8.1.0989/src/version.c 2019-03-02 10:13:36.800974804 +0100
---- src/version.c 2019-03-02 11:51:59.125366185 +0100
-***************
-*** 781,782 ****
---- 781,784 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 990,
- /**/
-
---
-Give a man a computer program and you give him a headache,
-but teach him to program computers and you give him the power
-to create headaches for others for the rest of his life...
- R. B. Forest
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
-/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\ an exciting new programming language -- http://www.Zimbu.org ///
- \\\ help me help AIDS victims -- http://ICCF-Holland.org ///