summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2023-03-11 20:56:35 +0000
committerBram Moolenaar <Bram@vim.org>2023-03-11 20:56:35 +0000
commitd13dd30240e32071210f55b587182ff48757ea46 (patch)
tree4a752aa8839e10003439f858e8d9125f7907a240
parentc481ad38f05c9f759ca7fd01a54c78acad794e85 (diff)
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.vim7
-rw-r--r--src/version.c2
-rw-r--r--src/vim9class.c6
3 files changed, 15 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim
index bc8a8e1d54..4b6a730bbd 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 0265c47a90..2dca10db9d 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 74664f1b26..8174351383 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;