patch 9.0.1862: Vim9 Garbage Collection issues
Problem: Vim9 Garbage Collection issues
Solution: Class members are garbage collected early leading to
use-after-free problems. Handle the garbage
collection of classes properly.
closes: #13019
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim
index 7ad53c7..72cdaf0 100644
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -3789,17 +3789,17 @@
vim9script
class A
this.var1: number = 10
- public static var2 = 20
- public static var3 = 30
+ public static var2: list<number> = [1, 2]
+ public static var3: dict<number> = {a: 1, b: 2}
static _priv_var4: number = 40
endclass
def T()
- assert_equal(20, A.var2)
- assert_equal(30, A.var3)
- A.var2 = 50
- A.var3 = 60
- assert_equal(50, A.var2)
- assert_equal(60, A.var3)
+ assert_equal([1, 2], A.var2)
+ assert_equal({a: 1, b: 2}, A.var3)
+ A.var2 = [3, 4]
+ A.var3 = {c: 3, d: 4}
+ assert_equal([3, 4], A.var2)
+ assert_equal({c: 3, d: 4}, A.var3)
assert_fails('echo A._priv_var4', 'E1333: Cannot access private member: _priv_var4')
enddef
T()