summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-bin-mruby/tools
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-12-16 19:26:40 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-12-16 19:26:40 +0900
commitfcbb7ec49dee53eb9dce42d2feead0aeb065f544 (patch)
treecdf41924b2cb00bb39b48846bcf9b950b2d9deb4 /mrbgems/mruby-bin-mruby/tools
parent05e6513fb4422bf2b2ef8861ea895ce9b68d03e6 (diff)
downloadmruby-fcbb7ec49dee53eb9dce42d2feead0aeb065f544.tar.gz
mruby-fcbb7ec49dee53eb9dce42d2feead0aeb065f544.zip
Fix crash if #inspect does not return a string value
Diffstat (limited to 'mrbgems/mruby-bin-mruby/tools')
-rw-r--r--mrbgems/mruby-bin-mruby/tools/mruby/mruby.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c b/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c
index 73617b162..247323b4e 100644
--- a/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c
+++ b/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c
@@ -11,8 +11,13 @@
static void
p(mrb_state *mrb, mrb_value obj)
{
- obj = mrb_funcall(mrb, obj, "inspect", 0);
- fwrite(RSTRING_PTR(obj), RSTRING_LEN(obj), 1, stdout);
+ mrb_value val;
+
+ val = mrb_funcall(mrb, obj, "inspect", 0);
+ if (!mrb_string_p(val)) {
+ val = mrb_obj_as_string(mrb, obj);
+ }
+ fwrite(RSTRING_PTR(val), RSTRING_LEN(val), 1, stdout);
putc('\n', stdout);
}
#else