1
0
forked from aniani/vim

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>
This commit is contained in:
Ernie Rael
2024-07-26 18:37:02 +02:00
committed by Christian Brabandt
parent 8754efe437
commit be82825687
4 changed files with 130 additions and 24 deletions

View File

@@ -267,11 +267,16 @@ tv_get_bool_or_number_chk(
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 @@ tv_get_string_buf_chk_strict(typval_T *varp, char_u *buf, int strict)
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: