diff options
| author | takkaw <[email protected]> | 2013-01-14 20:33:49 +0900 |
|---|---|---|
| committer | takkaw <[email protected]> | 2013-03-16 00:16:34 +0900 |
| commit | 5aafbca0e4769ca93ae088ec83f1ec6007e169a7 (patch) | |
| tree | 976564bd806c164bb2b437164b6eda5ebf44458b /src | |
| parent | 618d7339f198fb9692719641e363d2da9378e651 (diff) | |
| download | mruby-5aafbca0e4769ca93ae088ec83f1ec6007e169a7.tar.gz mruby-5aafbca0e4769ca93ae088ec83f1ec6007e169a7.zip | |
fix segmentation fault in BasicObject#inspect
Diffstat (limited to 'src')
| -rw-r--r-- | src/class.c | 9 |
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); } |
