summaryrefslogtreecommitdiff
path: root/src/testdir/test_viminfo.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-06-07 16:08:08 +0200
committerBram Moolenaar <Bram@vim.org>2020-06-07 16:08:08 +0200
commit5b157fe2edfdce5f77080aeac2b4a03f39eb1c1a (patch)
treee2757dfeb60d92934e3cd0900d9eb43769389f56 /src/testdir/test_viminfo.vim
parent673fc3e23f09095d17f0095c4323958041b2d0d2 (diff)
downloadvim-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.vim22
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)