# HG changeset patch # User Bram Moolenaar # Date 1589140804 -7200 # Node ID a8a76fd967ab55bd0a99bbdfb414383c7400aa66 # Parent 8ce5690fdb495c48d34df708d8be41644eb52151 patch 8.2.0732: Vim9: storing value in dict messes up stack Commit: https://github.com/vim/vim/commit/f163bd5e41e8ea1d32e7977e671598a9d6f7b23c Author: Bram Moolenaar Date: Sun May 10 21:47:43 2020 +0200 patch 8.2.0732: Vim9: storing value in dict messes up stack Problem: Vim9: storing value in dict messes up stack. Solution: Correct item count of stack. diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim --- a/src/testdir/test_vim9_cmd.vim +++ b/src/testdir/test_vim9_cmd.vim @@ -54,6 +54,12 @@ def Test_assign_list() assert_equal('asdf', l[1]) assert_equal('asdf', l[-1]) assert_equal('value', l[-2]) + + let nrl: list = [] + for i in range(5) + nrl[i] = i + endfor + assert_equal([0, 1, 2, 3, 4], nrl) enddef def Test_assign_dict() @@ -64,6 +70,12 @@ def Test_assign_dict() d[123] = 'qwerty' assert_equal('qwerty', d[123]) assert_equal('qwerty', d['123']) + + let nrd: dict = {} + for i in range(3) + nrd[i] = i + endfor + assert_equal({'0': 0, '1': 1, '2': 2}, nrd) enddef diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 732, +/**/ 731, /**/ 730, diff --git a/src/vim9execute.c b/src/vim9execute.c --- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -1286,6 +1286,7 @@ call_def_function( } clear_tv(tv_idx); clear_tv(tv_list); + ectx.ec_stack.ga_len -= 3; } break; @@ -1319,6 +1320,7 @@ call_def_function( } clear_tv(tv_key); clear_tv(tv_dict); + ectx.ec_stack.ga_len -= 3; } break;