diff options
author | Bram Moolenaar <Bram@vim.org> | 2023-03-11 20:56:35 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2023-03-11 20:56:35 +0000 |
commit | d13dd30240e32071210f55b587182ff48757ea46 (patch) | |
tree | 4a752aa8839e10003439f858e8d9125f7907a240 | |
parent | c481ad38f05c9f759ca7fd01a54c78acad794e85 (diff) | |
download | vim-git-d13dd30240e32071210f55b587182ff48757ea46.tar.gz |
patch 9.0.1402: crash when using null_classv9.0.1402
Problem: Crash when using null_class.
Solution: Give an error when trying to use a null class.
-rw-r--r-- | src/testdir/test_vim9_class.vim | 7 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9class.c | 6 |
3 files changed, 15 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim index bc8a8e1d5..4b6a730bb 100644 --- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -203,6 +203,13 @@ def Test_returning_null_object() v9.CheckScriptSuccess(lines) enddef +def Test_using_null_class() + var lines =<< trim END + @_ = null_class.member + END + v9.CheckDefExecAndScriptFailure(lines, ['E715:', 'E1363:']) +enddef + def Test_class_interface_wrong_end() var lines =<< trim END vim9script diff --git a/src/version.c b/src/version.c index 0265c47a9..2dca10db9 100644 --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1402, +/**/ 1401, /**/ 1400, diff --git a/src/vim9class.c b/src/vim9class.c index 74664f1b2..817435138 100644 --- a/src/vim9class.c +++ b/src/vim9class.c @@ -1262,6 +1262,12 @@ class_object_index( cl = rettv->vval.v_object->obj_class; } + if (cl == NULL) + { + emsg(_(e_incomplete_type)); + return FAIL; + } + if (*name_end == '(') { int on_class = rettv->v_type == VAR_CLASS; |