summaryrefslogtreecommitdiffstats
path: root/src/evalfunc.c
diff options
context:
space:
mode:
authorYegappan Lakshmanan <yegappan@yahoo.com>2024-05-01 11:44:17 +0200
committerChristian Brabandt <cb@256bit.org>2024-05-01 11:44:17 +0200
commitb2e42b9be0ffa193ef32ad5a5846ef46f5cc4e8c (patch)
treecde59e471fa2fc50d6f2c7f5d4ac2fc332266e0b /src/evalfunc.c
parentca4b81a7ae9ed524c7097dda2638cf55f2672afc (diff)
patch 9.1.0385: Vim9: crash with null_class and null_objectv9.1.0385
Problem: Vim9: crash with null_class and null_object (Aliaksei Budavei) Solution: Handle null_class and null_object correctly (Yegappan Lakshmanan) fixes: #14678 closes: #14681 Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Diffstat (limited to 'src/evalfunc.c')
-rw-r--r--src/evalfunc.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 20649828e0..742c5f8e79 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -11497,7 +11497,7 @@ f_type(typval_T *argvars, typval_T *rettv)
case VAR_CLASS:
{
class_T *cl = argvars[0].vval.v_class;
- if (IS_ENUM(cl))
+ if (cl && IS_ENUM(cl))
n = VAR_TYPE_ENUM;
else
n = VAR_TYPE_CLASS;
@@ -11505,11 +11505,18 @@ f_type(typval_T *argvars, typval_T *rettv)
}
case VAR_OBJECT:
{
- class_T *cl = argvars[0].vval.v_object->obj_class;
- if (IS_ENUM(cl))
- n = VAR_TYPE_ENUMVALUE;
- else
+ object_T *obj = argvars[0].vval.v_object;
+
+ if (obj == NULL)
n = VAR_TYPE_OBJECT;
+ else
+ {
+ class_T *cl = argvars[0].vval.v_object->obj_class;
+ if (IS_ENUM(cl))
+ n = VAR_TYPE_ENUMVALUE;
+ else
+ n = VAR_TYPE_OBJECT;
+ }
break;
}
case VAR_UNKNOWN: