Mercurial > vim
annotate src/testdir/test55.ok @ 10815:f883a1224396 v8.0.0297
patch 8.0.0297: double free on exit when using a closure
commit https://github.com/vim/vim/commit/03ff9bcbc968f7d306e4a4e334e226fdde62ca82
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Feb 2 22:59:27 2017 +0100
patch 8.0.0297: double free on exit when using a closure
Problem: Double free on exit when using a closure. (James McCoy)
Solution: Split free_al_functions in two parts. (closes https://github.com/vim/vim/issues/1428)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 02 Feb 2017 23:00:04 +0100 |
parents | 537bbbd4e987 |
children |
rev | line source |
---|---|
119 | 1 start: |
2 [1, 'as''d', [1, 2, function('strlen')], {'a': 1}] | |
3 {'a': 1} | |
4 1 | |
5 Vim(put):E684: | |
842 | 6 [1, 'as''d', [1, 2, function('strlen')], {'a': 1}] |
7 ['as''d', [1, 2, function('strlen')], {'a': 1}] | |
8 [1, 'as''d', [1, 2, function('strlen')]] | |
9 [1, 'as''d', [1, 2, function('strlen')], {'a': 1}] | |
10 [] | |
119 | 11 101101 |
12 {'1': 'asd', 'b': [1, 2, function('strlen')], '-1': {'a': 1}}asd | |
13 ['-1', '1', 'b'] | |
14 ['asd', [1, 2, function('strlen')], {'a': 1}] | |
15 1:'asd' | |
16 b:[1, 2, function('strlen')] | |
17 -1:{'a': 1} | |
18 Vim(call):E737: 3 | |
19 {'c': 'ccc', '1': 99, 'b': [1, 2, function('strlen')], '3': 33, '-1': {'a': 1}} | |
20 {'c': 'ccc', '1': 99, '3': 33, '-1': {'a': 1}} | |
21 101101 | |
22 [1, 'as''d', {'a': 1}] | |
23 [4] | |
24 {'1': 99, '3': 33} | |
842 | 25 [0, 1, 2, 3] |
26 [0, 1, 3] | |
27 [0, 1] | |
28 [0, 1] | |
29 [0, 1] | |
30 [0, 1, 2, 3] | |
31 [0, 1, 3] | |
32 [0, 3] | |
33 [3] | |
34 [3] | |
35 [3] | |
36 2 | |
37 3 | |
38 Vim(let):E687: | |
39 Vim(let):E688: | |
123 | 40 3000 2900 2001 1600 1501 |
41 Vim(let):E716: 1500 | |
42 NONE 2999 | |
119 | 43 33=999 |
44 {'33': 999} | |
45 len: 3 | |
46 again: 3 | |
8583
537bbbd4e987
commit https://github.com/vim/vim/commit/65639032bb7b17996cd255d1508a1df4ad528a1f
Christian Brabandt <cb@256bit.org>
parents:
8516
diff
changeset
|
47 xxx3 |
123 | 48 g:dict.func-4 |
49 a:function('3') | |
119 | 50 Vim(let):E698: |
164 | 51 same list: 1 |
148 | 52 depth is 0 |
53 0000-000 | |
54 ppppppp | |
55 0000-000 | |
56 ppppppp | |
57 0000-000 | |
58 ppppppp | |
59 depth is 1 | |
60 1000-000 | |
61 ppppppF | |
62 0000-000 | |
63 ppppppp | |
64 0000-000 | |
65 ppppppp | |
66 depth is 2 | |
67 1100-100 | |
68 ppFppFF | |
69 0000-000 | |
70 ppppppp | |
71 0000-000 | |
72 ppppppp | |
73 depth is 3 | |
74 1110-110 | |
75 pFFpFFF | |
76 0010-010 | |
77 pFppFpp | |
78 0000-000 | |
79 ppppppp | |
80 depth is 4 | |
81 1111-111 | |
82 FFFFFFF | |
83 0011-011 | |
84 FFpFFpp | |
85 0000-000 | |
86 ppppppp | |
6751 | 87 Unletting: |
88 depth is 0 | |
89 0000-000 | |
90 ppppppp | |
91 0000-000 | |
92 ppppppp | |
93 0000-000 | |
94 ppppppp | |
95 depth is 1 | |
96 1000-000 | |
97 ppFppFp | |
98 0000-000 | |
99 ppppppp | |
100 0000-000 | |
101 ppppppp | |
102 depth is 2 | |
103 1100-100 | |
104 pFFpFFp | |
105 0000-000 | |
106 ppppppp | |
107 0000-000 | |
108 ppppppp | |
109 depth is 3 | |
110 1110-110 | |
111 FFFFFFp | |
112 0010-010 | |
113 FppFppp | |
114 0000-000 | |
115 ppppppp | |
116 depth is 4 | |
117 1111-111 | |
118 FFFFFFp | |
119 0011-011 | |
120 FppFppp | |
121 0000-000 | |
122 ppppppp | |
123 Locks and commands or functions: | |
124 No :unlet after lock on dict: | |
125 Vim(unlet):E741: | |
126 {'a': 99, 'b': 100} | |
127 :unlet after lock on dict item: | |
128 did :unlet | |
129 {'b': 100} | |
130 filter() after lock on dict item: | |
131 did filter() | |
132 {'b': 100} | |
133 map() after lock on dict: | |
134 did map() | |
135 {'a': 299, 'b': 300} | |
136 No extend() after lock on dict item: | |
137 Vim(put):E741: | |
138 {'a': 99, 'b': 100} | |
139 No remove() of write-protected scope-level variable: | |
140 Vim(put):E795: | |
141 No extend() of write-protected scope-level variable: | |
142 Vim(put):E742: | |
143 No :unlet of variable in locked scope: | |
144 Vim(unlet):E741: | |
6791 | 145 No :let += of locked list variable: |
146 Vim(let):E741: | |
147 ['a', 'b', 3] | |
6166 | 148 [1, 2, 3, 4] |
149 [1, 2, 3, 4] | |
150 [1, 2, 3, 4] | |
151 [1, 2, 3, 4] | |
152 [1, 2, 3, 4] | |
5604 | 153 locked g:footest#x:-1 |
154 exists g:footest#x:0 | |
155 g:footest#x: 1 | |
148 | 156 caught a:000 |
157 caught a:000[0] | |
158 caught a:000[2] | |
159 caught a:000[3] | |
160 [1, 2, [3, 9, 5, 6], {'a': 12, '5': 8}] | |
5747 | 161 ['-0', 'A11', 2, 'xaaa', 4, 'foo', 'foo6', 'foo', [0, 1, 2], 'x8', [0, 1, 2], 1.5] |
162 [1.5, [0, 1, 2], 'x8', [0, 1, 2], 'foo', 'foo6', 'foo', 4, 'xaaa', 2, 2, 'A11', '-0'] | |
163 [1.5, [0, 1, 2], 'x8', [0, 1, 2], 'foo', 'foo6', 'foo', 4, 'xaaa', 2, 2, 'A11', '-0'] | |
164 ['-0', 'A11', 'foo', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 2, 4, [0, 1, 2], [0, 1, 2]] | |
165 [[0, 1, 2], [0, 1, 2], 4, 2, 2, 1.5, 'xaaa', 'x8', 'foo6', 'foo', 'foo', 'A11', '-0'] | |
166 ['-0', 'A11', 'foo', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 2, 4, [0, 1, 2], [0, 1, 2]] | |
167 ['-0', 'A11', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 4, [0, 1, 2]] | |
6022 | 168 [-1, 'one', 'two', 'three', 'four', 1.0e-15, 0.22, 7, 9, 12, 18, 22, 255] |
169 ['bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] | |
170 ['bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] | |
171 ['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 12, 18, 22, 255, 7, 9, [], {}] | |
282 | 172 ['aa', 'bb'] |
173 ['aa', 'bb'] | |
174 ['', 'aa', 'bb', ''] | |
175 ['', '', 'aa', '', 'bb', '', ''] | |
176 ['aa', '', 'bb'] | |
177 ['', 'aa', '', 'bb', ''] | |
178 ['aa', '', 'bb', 'cc', ''] | |
293 | 179 ['a', 'b', 'c'] |
180 ['', 'a', '', 'b', '', 'c', ''] | |
1121 | 181 1 |
182 1 | |
183 0 | |
184 0 | |
2634 | 185 1 |
186 1 | |
3508 | 187 [1, 2, 3, 4, 5, 1, 2, 3, 4, 5] |
188 {'a': {'b': 'B'}} | |
189 Vim(call):E737: a | |
190 {'a': {'b': 'B'}} | |
6422 | 191 [1, 2] |
3774 | 192 Vim(foldopen):E490: |
193 | |
194 | |
195 Error detected while processing : | |
196 E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry | |
197 |