diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-06-07 16:08:08 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-06-07 16:08:08 +0200 |
commit | 5b157fe2edfdce5f77080aeac2b4a03f39eb1c1a (patch) | |
tree | e2757dfeb60d92934e3cd0900d9eb43769389f56 /src/testdir/test_viminfo.vim | |
parent | 673fc3e23f09095d17f0095c4323958041b2d0d2 (diff) | |
download | vim-git-5b157fe2edfdce5f77080aeac2b4a03f39eb1c1a.tar.gz |
patch 8.2.0920: writing viminfo fails with a circular referencev8.2.0920
Problem: Writing viminfo fails with a circular reference.
Solution: Use copyID to detect the cycle. (closes #6217)
Diffstat (limited to 'src/testdir/test_viminfo.vim')
-rw-r--r-- | src/testdir/test_viminfo.vim | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/testdir/test_viminfo.vim b/src/testdir/test_viminfo.vim index b4708f5f8..865059821 100644 --- a/src/testdir/test_viminfo.vim +++ b/src/testdir/test_viminfo.vim @@ -91,6 +91,28 @@ func Test_global_vars() set viminfo-=! endfunc +func Test_global_vars_with_circular_reference() + let g:MY_GLOBAL_LIST = [] + call add(g:MY_GLOBAL_LIST, g:MY_GLOBAL_LIST) + let g:MY_GLOBAL_DICT = {} + let g:MY_GLOBAL_DICT['self'] = g:MY_GLOBAL_DICT + + set viminfo='100,<50,s10,h,!,nviminfo + wv! Xviminfo + call assert_equal(v:errmsg, '') + + unlet g:MY_GLOBAL_LIST + unlet g:MY_GLOBAL_DICT + + rv! Xviminfo + call assert_equal(v:errmsg, '') + call assert_true(!exists('g:MY_GLOBAL_LIST')) + call assert_true(!exists('g:MY_GLOBAL_DICT')) + + call delete('Xviminfo') + set viminfo-=! +endfunc + func Test_cmdline_history() call histdel(':') call test_settime(11) |