diff options
author | Jan Edmund Lazo <janedmundlazo@hotmail.com> | 2018-11-19 21:52:38 -0500 |
---|---|---|
committer | Jan Edmund Lazo <janedmundlazo@hotmail.com> | 2018-11-19 21:53:39 -0500 |
commit | e71f43f8e7beaa0d1ed35b63ea55e43f886a0875 (patch) | |
tree | 4dbaef31b299c40d207cecd3b5c08f9f674983f5 | |
parent | a5637597a6df1465df50584d853dbd8d77cb24da (diff) | |
download | rneovim-e71f43f8e7beaa0d1ed35b63ea55e43f886a0875.tar.gz rneovim-e71f43f8e7beaa0d1ed35b63ea55e43f886a0875.tar.bz2 rneovim-e71f43f8e7beaa0d1ed35b63ea55e43f886a0875.zip |
vim-patch:8.0.0737: crash when X11 selection is very big
Problem: Crash when X11 selection is very big.
Solution: Use static items instead of allocating them. Add callbacks.
(Ozaki Kiichi)
https://github.com/vim/vim/commit/cdb7e1b7f9e18a7b165ff09103a9994f84966123
-rw-r--r-- | src/nvim/testdir/shared.vim | 7 | ||||
-rw-r--r-- | src/nvim/testdir/test_quotestar.vim | 12 |
2 files changed, 16 insertions, 3 deletions
diff --git a/src/nvim/testdir/shared.vim b/src/nvim/testdir/shared.vim index b1f1d8fe66..a19929e79b 100644 --- a/src/nvim/testdir/shared.vim +++ b/src/nvim/testdir/shared.vim @@ -136,14 +136,15 @@ endfunc " Wait for up to a second for "expr" to become true. " Return time slept in milliseconds. With the +reltime feature this can be " more than the actual waiting time. Without +reltime it can also be less. -func WaitFor(expr) +func WaitFor(expr, ...) + let timeout = get(a:000, 0, 1000) " using reltime() is more accurate, but not always available if has('reltime') let start = reltime() else let slept = 0 endif - for i in range(100) + for i in range(timeout / 10) try if eval(a:expr) if has('reltime') @@ -158,7 +159,7 @@ func WaitFor(expr) endif sleep 10m endfor - return 1000 + return timeout endfunc " Wait for up to a given milliseconds. diff --git a/src/nvim/testdir/test_quotestar.vim b/src/nvim/testdir/test_quotestar.vim index 3a7edcbd7c..3ce1a84281 100644 --- a/src/nvim/testdir/test_quotestar.vim +++ b/src/nvim/testdir/test_quotestar.vim @@ -87,6 +87,18 @@ func Do_test_quotestar_for_x11() " Check that the *-register of this vim instance is changed as expected. call WaitFor('@* == "yes"', 3000) + " Handle the large selection over 262040 byte. + let length = 262044 + let sample = 'a' . repeat('b', length - 2) . 'c' + let @* = sample + call WaitFor('remote_expr("' . name . '", "len(@*) >= ' . length . '", "", 1)', 3000) + let res = remote_expr(name, "@*", "", 2) + call assert_equal(length, len(res)) + " Check length to prevent a large amount of output at assertion failure. + if length == len(res) + call assert_equal(sample, res) + endif + if has('unix') && has('gui') && !has('gui_running') let @* = '' |