Mercurial > vim
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)