summaryrefslogtreecommitdiffhomepage
path: root/src/class.c
diff options
context:
space:
mode:
authortakkaw <[email protected]>2013-01-14 20:33:49 +0900
committertakkaw <[email protected]>2013-03-16 00:16:34 +0900
commit5aafbca0e4769ca93ae088ec83f1ec6007e169a7 (patch)
tree976564bd806c164bb2b437164b6eda5ebf44458b /src/class.c
parent618d7339f198fb9692719641e363d2da9378e651 (diff)
downloadmruby-5aafbca0e4769ca93ae088ec83f1ec6007e169a7.tar.gz
mruby-5aafbca0e4769ca93ae088ec83f1ec6007e169a7.zip
fix segmentation fault in BasicObject#inspect
Diffstat (limited to 'src/class.c')
-rw-r--r--src/class.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/class.c b/src/class.c
index 6f83e997e..59431c26e 100644
--- a/src/class.c
+++ b/src/class.c
@@ -1139,8 +1139,13 @@ mrb_bob_missing(mrb_state *mrb, mrb_value mod)
mrb_raise(mrb, E_TYPE_ERROR, "name should be a symbol");
}
- inspect = mrb_funcall(mrb, mod, "inspect", 0);
- if (RSTRING_LEN(inspect) > 64) {
+ if (mrb_respond_to(mrb,mod,mrb_intern(mrb,"inspect"))){
+ inspect = mrb_funcall(mrb, mod, "inspect", 0);
+ if (RSTRING_LEN(inspect) > 64) {
+ inspect = mrb_any_to_s(mrb, mod);
+ }
+ }
+ else {
inspect = mrb_any_to_s(mrb, mod);
}