From c400165afaca06dcff06d980c8f7fe46ff3904e4 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Tue, 16 Nov 2021 15:01:05 -0500 Subject: Fix crash when clearing method cache for builtin method Builtin methods do not always have their mandatory_only_cme created (it is only created when called with only mandatory parameters), so it could be null. If we try to clear the cme, it will crash because it is null. Co-authored-by: Aaron Patterson --- vm_method.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'vm_method.c') diff --git a/vm_method.c b/vm_method.c index b41b0ff908..337d326092 100644 --- a/vm_method.c +++ b/vm_method.c @@ -209,7 +209,7 @@ clear_method_cache_by_id_in_class(VALUE klass, ID mid) vm_cme_invalidate((rb_callable_method_entry_t *)cme); RB_DEBUG_COUNTER_INC(cc_invalidate_tree_cme); - if (cme->def->iseq_overload) { + if (cme->def->iseq_overload && cme->def->body.iseq.mandatory_only_cme) { vm_cme_invalidate((rb_callable_method_entry_t *)cme->def->body.iseq.mandatory_only_cme); } } -- cgit v1.2.1