Mercurial > vim
comparison src/testdir/test_listdict.vim @ 21000:3b29ac3394dc v8.2.1051
patch 8.2.1051: crash when changing a list while using reduce() on it
Commit: https://github.com/vim/vim/commit/ca275a05d8b79f6a9101604fdede2373d0dea44e
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jun 24 22:07:46 2020 +0200
patch 8.2.1051: crash when changing a list while using reduce() on it
Problem: Crash when changing a list while using reduce() on it.
Solution: Lock the list. (closes https://github.com/vim/vim/issues/6330)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 24 Jun 2020 22:15:04 +0200 |
parents | 1fa0ace0ba65 |
children | 6dc8625889fe |
comparison
equal
deleted
inserted
replaced
20999:0c32e18e0a19 | 21000:3b29ac3394dc |
---|---|
707 call assert_fails("call reduce(0z, { acc, val -> acc + val })", 'E998: Reduce of an empty Blob with no initial value') | 707 call assert_fails("call reduce(0z, { acc, val -> acc + val })", 'E998: Reduce of an empty Blob with no initial value') |
708 | 708 |
709 call assert_fails("call reduce({}, { acc, val -> acc + val }, 1)", 'E897:') | 709 call assert_fails("call reduce({}, { acc, val -> acc + val }, 1)", 'E897:') |
710 call assert_fails("call reduce(0, { acc, val -> acc + val }, 1)", 'E897:') | 710 call assert_fails("call reduce(0, { acc, val -> acc + val }, 1)", 'E897:') |
711 call assert_fails("call reduce('', { acc, val -> acc + val }, 1)", 'E897:') | 711 call assert_fails("call reduce('', { acc, val -> acc + val }, 1)", 'E897:') |
712 | |
713 let g:lut = [1, 2, 3, 4] | |
714 func EvilRemove() | |
715 call remove(g:lut, 1) | |
716 return 1 | |
717 endfunc | |
718 call assert_fails("call reduce(g:lut, { acc, val -> EvilRemove() }, 1)", 'E742:') | |
719 unlet g:lut | |
720 delfunc EvilRemove | |
712 endfunc | 721 endfunc |
713 | 722 |
714 " splitting a string to a List using split() | 723 " splitting a string to a List using split() |
715 func Test_str_split() | 724 func Test_str_split() |
716 call assert_equal(['aa', 'bb'], split(' aa bb ')) | 725 call assert_equal(['aa', 'bb'], split(' aa bb ')) |