changeset 32142:64e8cd965e79 v9.0.1402

patch 9.0.1402: crash when using null_class Commit: https://github.com/vim/vim/commit/d13dd30240e32071210f55b587182ff48757ea46 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Mar 11 20:56:35 2023 +0000 patch 9.0.1402: crash when using null_class Problem: Crash when using null_class. Solution: Give an error when trying to use a null class.
author Bram Moolenaar <Bram@vim.org>
date Sat, 11 Mar 2023 22:00:03 +0100
parents fb15a6785644
children 204cce063401
files src/testdir/test_vim9_class.vim src/version.c src/vim9class.c
diffstat 3 files changed, 15 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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,
--- 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;