From: Bram Moolenaar Date: Sun, 10 May 2020 19:47:43 +0000 (+0200) Subject: patch 8.2.0732: Vim9: storing value in dict messes up stack X-Git-Tag: v8.2.0732 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f163bd5e41e8ea1d32e7977e671598a9d6f7b23c;p=vim 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 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 = [] + 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 index efb3c3187..6a29592c1 100644 --- a/src/version.c +++ b/src/version.c @@ -746,6 +746,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 732, /**/ 731, /**/ 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;