changeset 32078:615964c77be3 v9.0.1370

patch 9.0.1370: crash when using a NULL object Commit: https://github.com/vim/vim/commit/c3f971f28989fde7d94b45957496fecd6e6f2177 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Mar 2 17:38:33 2023 +0000 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 https://github.com/vim/vim/issues/12083)
author Bram Moolenaar <Bram@vim.org>
date Thu, 02 Mar 2023 18:45:08 +0100
parents 0e2d11229f70
children 6ddbdb9ba573
files src/testdir/test_vim9_class.vim src/version.c src/vim9execute.c
diffstat 3 files changed, 27 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -238,6 +238,24 @@ def Test_object_not_set()
   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
--- 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 */
 /**/
+    1370,
+/**/
     1369,
 /**/
     1368,
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -5321,6 +5321,13 @@ exec_instructions(ectx_T *ectx)
 		    }
 
 		    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;