• R/O
  • SSH

vim: Commit

Mirror of the Vim source from https://github.com/vim/vim


Commit MetaInfo

Revisione45b2e28e45e90727cae9fc13b713f888e4f9d32 (tree)
Zeit2021-02-24 20:30:03
AutorBram Moolenaar <Bram@vim....>
CommiterBram Moolenaar

Log Message

patch 8.2.2549: crash after using "g:" in a for loop

Commit: https://github.com/vim/vim/commit/1bd3cb201983859d86d644eef9e98cd3e9de7261
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Feb 24 12:27:31 2021 +0100

patch 8.2.2549: crash after using "g:" in a for loop
Problem: Crash after using "g:" in a for loop.
Solution: Increment the reference count. (closes https://github.com/vim/vim/issues/7892)

Ändern Zusammenfassung

Diff

diff -r a18e4d113a10 -r e45b2e28e45e src/testdir/test_vim9_expr.vim
--- a/src/testdir/test_vim9_expr.vim Tue Feb 23 19:45:05 2021 +0100
+++ b/src/testdir/test_vim9_expr.vim Wed Feb 24 12:30:03 2021 +0100
@@ -2545,6 +2545,12 @@
25452545 assert_equal('some', get(t:, 'some_var', 'xxx'))
25462546 assert_equal('xxx', get(t:, 'no_var', 'xxx'))
25472547 unlet t:some_var
2548+
2549+ # check using g: in a for loop more than DO_NOT_FREE_CNT times
2550+ for i in range(100000)
2551+ if has_key(g:, 'does-not-exist')
2552+ endif
2553+ endfor
25482554 enddef
25492555
25502556 def Test_expr7_parens()
diff -r a18e4d113a10 -r e45b2e28e45e src/version.c
--- a/src/version.c Tue Feb 23 19:45:05 2021 +0100
+++ b/src/version.c Wed Feb 24 12:30:03 2021 +0100
@@ -751,6 +751,8 @@
751751 static int included_patches[] =
752752 { /* Add new patch number below this line */
753753 /**/
754+ 2549,
755+/**/
754756 2548,
755757 /**/
756758 2547,
diff -r a18e4d113a10 -r e45b2e28e45e src/vim9execute.c
--- a/src/vim9execute.c Tue Feb 23 19:45:05 2021 +0100
+++ b/src/vim9execute.c Wed Feb 24 12:30:03 2021 +0100
@@ -1771,6 +1771,7 @@
17711771 tv->v_type = VAR_DICT;
17721772 tv->v_lock = 0;
17731773 tv->vval.v_dict = d;
1774+ ++d->dv_refcount;
17741775 ++ectx.ec_stack.ga_len;
17751776 }
17761777 break;
Show on old repository browser