# HG changeset patch # User Bram Moolenaar # Date 1677779108 -3600 # Node ID 615964c77be3fc72ed6ba8b942a32b72d2acd0f7 # Parent 0e2d11229f707d4f4fdb42f5bda95569474a96f0 patch 9.0.1370: crash when using a NULL object Commit: https://github.com/vim/vim/commit/c3f971f28989fde7d94b45957496fecd6e6f2177 Author: Bram Moolenaar 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) diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim --- 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 diff --git a/src/version.c b/src/version.c --- 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, diff --git a/src/vim9execute.c b/src/vim9execute.c --- 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;