ZyX wrote: > Attached script, being sourced causes vim to hang up forever. > Test command: > vim -u NONE -c 'so bug.vim'
To clarify the problem, start Vim 7.3.3 and enter the following (this is the essence of the script mentioned above, and will cause Vim to hang, so close all files first): :let l=[] :call add(l, l) :let dict4={"l": l} :call add(dict4.l, dict4) :echo (dict4 ==# deepcopy(dict4)) The last line causes Vim to hang (CPU goes to 100%, memory is not consumed). Starting an investigation: :let l=[] :call add(l, l) :echo 'l=' l :let k=[] :call add(k, deepcopy(k)) :echo 'k=' k The above displays: l= [[...]] k= [[]] I do not know what the "..." means but it is probably a bad sign. Further investigation confirms this: :redir @a :let exp = 'l' :for i in range(1, 10) : execute 'let val = ' . exp : echo exp '=' val : unlet val : let exp .= '[0]' :endfor :redir END :$put a ---Output--- l = [[...]] l[0] = [[...]] l[0][0] = [[...]] l[0][0][0] = [[...]] l[0][0][0][0] = [[...]] l[0][0][0][0][0] = [[...]] l[0][0][0][0][0][0] = [[...]] l[0][0][0][0][0][0][0] = [[...]] l[0][0][0][0][0][0][0][0] = [[...]] l[0][0][0][0][0][0][0][0][0] = [[...]] Also, the output from: :echo string(l) is E724: variable nested too deep for displaying John -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php