0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

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)
This commit is contained in:
Bram Moolenaar
2023-03-02 17:38:33 +00:00
parent c6ff21e876
commit c3f971f289
3 changed files with 27 additions and 0 deletions

View File

@@ -235,6 +235,24 @@ def Test_object_not_set()
END END
v9.CheckScriptFailure(lines, 'E1360:') v9.CheckScriptFailure(lines, 'E1360:')
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 lines =<< trim END
vim9script vim9script

View File

@@ -695,6 +695,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1370,
/**/ /**/
1369, 1369,
/**/ /**/

View File

@@ -5321,6 +5321,13 @@ exec_instructions(ectx_T *ectx)
} }
object_T *obj = tv->vval.v_object; 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; int idx;
if (iptr->isn_type == ISN_GET_OBJ_MEMBER) if (iptr->isn_type == ISN_GET_OBJ_MEMBER)
idx = iptr->isn_arg.number; idx = iptr->isn_arg.number;