diff options
author | Yegappan Lakshmanan <yegappan@yahoo.com> | 2024-05-01 11:44:17 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2024-05-01 11:44:17 +0200 |
commit | b2e42b9be0ffa193ef32ad5a5846ef46f5cc4e8c (patch) | |
tree | cde59e471fa2fc50d6f2c7f5d4ac2fc332266e0b /src/evalfunc.c | |
parent | ca4b81a7ae9ed524c7097dda2638cf55f2672afc (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.c | 17 |
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: |