From 9e0a91d0640600f2dfd7fc1d5fae6667019c9ca5 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Tue, 4 Jan 2022 09:13:19 -0800 Subject: Don't segfault if Warning.warn is undefined Check that there is a method entry for the method before passing it to rb_method_entry_arity. Fixes [Bug #18458] --- error.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'error.c') diff --git a/error.c b/error.c index 6a60919d5c..c7c5159927 100644 --- a/error.c +++ b/error.c @@ -317,7 +317,8 @@ rb_warning_warn(VALUE mod, VALUE str) static int rb_warning_warn_arity(void) { - return rb_method_entry_arity(rb_method_entry(rb_singleton_class(rb_mWarning), id_warn)); + const rb_method_entry_t *me = rb_method_entry(rb_singleton_class(rb_mWarning), id_warn); + return me ? rb_method_entry_arity(me) : 1; } static VALUE -- cgit v1.2.1