diff options
author | Kenichi Kamiya <kachick1@gmail.com> | 2021-03-28 08:47:42 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-28 08:47:42 +0900 |
commit | 0a544c0c35f7445d69402d7c53d825384c728017 (patch) | |
tree | 12292326abb521d9e3096ac6e7b76314c6677b89 /error.c | |
parent | 95d9fe9538441eb57ee6752aa1c5088fc6608e34 (diff) |
Fix segmentation fault when `Module#name` returns non string value [Bug #17754]
* Add test for NoMethodError#to_s does not segfault
* Ensure no segfault even if Module#name is overridden
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/4328
Merged-By: nobu <nobu@ruby-lang.org>
Diffstat (limited to 'error.c')
-rw-r--r-- | error.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -1965,8 +1965,10 @@ name_err_mesg_to_str(VALUE obj) d = rb_protect(name_err_mesg_receiver_name, obj, &state); if (state || d == Qundef || d == Qnil) d = rb_protect(rb_inspect, obj, &state); - if (state) + if (state) { rb_set_errinfo(Qnil); + } + d = rb_check_string_type(d); if (NIL_P(d)) { d = rb_any_to_s(obj); } |