diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-05-10 21:47:43 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-05-10 21:47:43 +0200 |
commit | f163bd5e41e8ea1d32e7977e671598a9d6f7b23c (patch) | |
tree | 89429218a74bdf64027a9c204e6911d1f967d297 | |
parent | 7e5bd91dc99e1ecb38c4220eaab1a906a69815c2 (diff) | |
download | vim-git-f163bd5e41e8ea1d32e7977e671598a9d6f7b23c.tar.gz |
patch 8.2.0732: Vim9: storing value in dict messes up stackv8.2.0732
Problem: Vim9: storing value in dict messes up stack.
Solution: Correct item count of stack.
-rw-r--r-- | src/testdir/test_vim9_cmd.vim | 12 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9execute.c | 2 |
3 files changed, 16 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim index 12260c355..55d756a67 100644 --- 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<number> = [] + 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<number> = {} + 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 index efb3c3187..6a29592c1 100644 --- 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 index ba4ae4787..4356e2a95 100644 --- 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; |