From b4b2a21fdfa0aef65caa8dc9fb85ab59f9ddbb53 Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 23 Jun 2015 05:32:52 +0000 Subject: error.c: ArgumentError if no receiver * error.c (name_err_receiver): raise ArgumentError if no receiver is available on this exception object. [Feature #10881] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51002 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- error.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'error.c') diff --git a/error.c b/error.c index b668375a55..70ebe6bb67 100644 --- a/error.c +++ b/error.c @@ -1264,7 +1264,10 @@ name_err_receiver(VALUE self) { VALUE *ptr, mesg = rb_attr_get(self, id_mesg); - TypedData_Get_Struct(mesg, VALUE, &name_err_mesg_data_type, ptr); + if (!rb_typeddata_is_kind_of(mesg, &name_err_mesg_data_type)) { + rb_raise(rb_eArgError, "no receiver is available"); + } + ptr = DATA_PTR(mesg); return ptr[NAME_ERR_MESG__RECV]; } -- cgit v1.2.3