From: Yegappan Lakshmanan Date: Tue, 5 Aug 2025 17:17:51 +0000 (+0200) Subject: patch 9.1.1592: Vim9: crash with classes and garbage collection X-Git-Tag: v9.1.1592^0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=688ebe596d1d6b3d8284de5572ce502d22d20b78;p=thirdparty%2Fvim.git patch 9.1.1592: Vim9: crash with classes and garbage collection Problem: Vim9: crash with classes and garbage collection (Christian J. Robinson, after v9.1.1566) Solution: When getting the references to an object, make sure the object is valid (Yegappan Lakshmanan) closes: #17860 Signed-off-by: Yegappan Lakshmanan Signed-off-by: Christian Brabandt --- diff --git a/src/version.c b/src/version.c index cb64546391..fecf9219f0 100644 --- a/src/version.c +++ b/src/version.c @@ -719,6 +719,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1592, /**/ 1591, /**/ diff --git a/src/vim9class.c b/src/vim9class.c index aa68a6dc8a..40b594af79 100644 --- a/src/vim9class.c +++ b/src/vim9class.c @@ -3714,7 +3714,8 @@ class_get_selfrefs(class_T *cl) for (int i = 0; i < cl->class_class_member_count; ++i) { tv = &cl->class_members_tv[i]; - if (tv->v_type == VAR_OBJECT && tv->vval.v_object->obj_class == cl + if (tv->v_type == VAR_OBJECT && tv->vval.v_object != NULL + && tv->vval.v_object->obj_class == cl && (tv->vval.v_object->obj_refcount == 1 || (IS_ENUM(cl) && tv->vval.v_object->obj_refcount == 2))) self_refs++;