diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | error.c | 5 |
2 files changed, 9 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Tue Jun 23 14:32:42 2015 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * error.c (name_err_receiver): raise ArgumentError if no receiver + is available on this exception object. [Feature #10881] + Tue Jun 23 09:48:34 2015 Eric Wong <e@80x24.org> * dir.c (check_dirname): avoid volatile, use return value @@ -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]; } |