patch 9.0.1370: crash when using a NULL object
Problem: Crash when using a NULL object. (Ernie Rael)
Solution: Check for NULL and give an error message. (closes #12083)
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim
index 3bb289b..c228f26 100644
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -238,6 +238,24 @@
lines =<< trim END
vim9script
+ class Class
+ this.id: string
+ def Method1()
+ echo 'Method1' .. this.id
+ enddef
+ endclass
+
+ var obj: Class
+ def Func()
+ obj.Method1()
+ enddef
+ Func()
+ END
+ v9.CheckScriptFailure(lines, 'E1360:')
+
+ lines =<< trim END
+ vim9script
+
class Background
this.background = 'dark'
endclass
diff --git a/src/version.c b/src/version.c
index 6aa63ef..857c139 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1370,
+/**/
1369,
/**/
1368,
diff --git a/src/vim9execute.c b/src/vim9execute.c
index bc4a1fc..f8ce101 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -5321,6 +5321,13 @@
}
object_T *obj = tv->vval.v_object;
+ if (obj == NULL)
+ {
+ SOURCING_LNUM = iptr->isn_lnum;
+ emsg(_(e_using_null_object));
+ goto on_error;
+ }
+
int idx;
if (iptr->isn_type == ISN_GET_OBJ_MEMBER)
idx = iptr->isn_arg.number;