patch 9.0.1317: crash when using an unset object variable
Problem: Crash when using an unset object variable.
Solution: Give an error instead. (closes #12005)
diff --git a/src/vim9class.c b/src/vim9class.c
index ecf5de7..e11324d 100644
--- a/src/vim9class.c
+++ b/src/vim9class.c
@@ -1234,9 +1234,6 @@
evalarg_T *evalarg,
int verbose UNUSED) // give error messages
{
- // int evaluate = evalarg != NULL
- // && (evalarg->eval_flags & EVAL_EVALUATE);
-
if (VIM_ISWHITE((*arg)[1]))
{
semsg(_(e_no_white_space_allowed_after_str_str), ".", *arg);
@@ -1250,8 +1247,19 @@
return FAIL;
size_t len = name_end - name;
- class_T *cl = rettv->v_type == VAR_CLASS ? rettv->vval.v_class
- : rettv->vval.v_object->obj_class;
+ class_T *cl;
+ if (rettv->v_type == VAR_CLASS)
+ cl = rettv->vval.v_class;
+ else // VAR_OBJECT
+ {
+ if (rettv->vval.v_object == NULL)
+ {
+ emsg(_(e_using_null_object));
+ return FAIL;
+ }
+ cl = rettv->vval.v_object->obj_class;
+ }
+
if (*name_end == '(')
{
int on_class = rettv->v_type == VAR_CLASS;