patch 9.1.0620: Vim9: segfauls with null objects
Problem: Vim9: segfauls with null objects
(after v9.1.0219)
Solution: Check object pointer being NULL
(Ernie Rael)
fixes: #15338
closes: #15349
Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/typval.c b/src/typval.c
index 67c819f..e50e96a 100644
--- a/src/typval.c
+++ b/src/typval.c
@@ -267,11 +267,16 @@
break;
case VAR_OBJECT:
{
- class_T *cl = varp->vval.v_object->obj_class;
- if (cl != NULL && IS_ENUM(cl))
- semsg(_(e_using_enum_str_as_number), cl->class_name);
+ if (varp->vval.v_object == NULL)
+ emsg(_(e_using_object_as_string));
else
- emsg(_(e_using_object_as_number));
+ {
+ class_T *cl = varp->vval.v_object->obj_class;
+ if (cl != NULL && IS_ENUM(cl))
+ semsg(_(e_using_enum_str_as_number), cl->class_name);
+ else
+ emsg(_(e_using_object_as_number));
+ }
}
break;
case VAR_VOID:
@@ -1146,11 +1151,16 @@
break;
case VAR_OBJECT:
{
- class_T *cl = varp->vval.v_object->obj_class;
- if (cl != NULL && IS_ENUM(cl))
- semsg(_(e_using_enum_str_as_string), cl->class_name);
- else
+ if (varp->vval.v_object == NULL)
emsg(_(e_using_object_as_string));
+ else
+ {
+ class_T *cl = varp->vval.v_object->obj_class;
+ if (cl != NULL && IS_ENUM(cl))
+ semsg(_(e_using_enum_str_as_string), cl->class_name);
+ else
+ emsg(_(e_using_object_as_string));
+ }
}
break;
case VAR_JOB: