diff src/testdir/test_viminfo.vim @ 20735:298ef749e5fb v8.2.0920

patch 8.2.0920: writing viminfo fails with a circular reference Commit: https://github.com/vim/vim/commit/5b157fe2edfdce5f77080aeac2b4a03f39eb1c1a Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jun 7 16:08:08 2020 +0200 patch 8.2.0920: writing viminfo fails with a circular reference Problem: Writing viminfo fails with a circular reference. Solution: Use copyID to detect the cycle. (closes https://github.com/vim/vim/issues/6217)
author Bram Moolenaar <Bram@vim.org>
date Sun, 07 Jun 2020 16:15:03 +0200
parents 2c4d9ca33769
children 505d97ea54da
line wrap: on
line diff
--- 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)