diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-12-12 23:12:48 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-12-12 23:12:48 +0900 |
| commit | f1481105b74909335c89b8db3a705a0eee6e42e3 (patch) | |
| tree | d3437cf0c430d745ca8bfe40721e6d2492af662c /src | |
| parent | 96d02b1268b721b4a57106bd48f275fbd0192e25 (diff) | |
| parent | fe01ce5b02de28dcabb7cd6031133bf9e9bf979f (diff) | |
| download | mruby-f1481105b74909335c89b8db3a705a0eee6e42e3.tar.gz mruby-f1481105b74909335c89b8db3a705a0eee6e42e3.zip | |
Merge pull request #2668 from sdottaka/fix-crash-for-inspect
Fix crash if #inspect does not return a string value
Diffstat (limited to 'src')
| -rw-r--r-- | src/class.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/class.c b/src/class.c index afcc4dc1d..dc396f277 100644 --- a/src/class.c +++ b/src/class.c @@ -1072,7 +1072,7 @@ mrb_method_search(mrb_state *mrb, struct RClass* c, mrb_sym mid) m = mrb_method_search_vm(mrb, &c, mid); if (!m) { mrb_value inspect = mrb_funcall(mrb, mrb_obj_value(c), "inspect", 0); - if (RSTRING_LEN(inspect) > 64) { + if (mrb_string_p(inspect) && RSTRING_LEN(inspect) > 64) { inspect = mrb_any_to_s(mrb, mrb_obj_value(c)); } mrb_name_error(mrb, mid, "undefined method '%S' for class %S", @@ -1324,7 +1324,7 @@ mrb_bob_missing(mrb_state *mrb, mrb_value mod) } else if (mrb_respond_to(mrb, mod, inspect) && mrb->c->ci - mrb->c->cibase < 64) { repr = mrb_funcall_argv(mrb, mod, inspect, 0, 0); - if (RSTRING_LEN(repr) > 64) { + if (mrb_string_p(repr) && RSTRING_LEN(repr) > 64) { repr = mrb_any_to_s(mrb, mod); } } |
