summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-bin-mirb/tools
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-12-12 13:14:56 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-12-12 13:14:56 +0900
commit9723d6e4ba45c404dc420021558b25ca0494c8d8 (patch)
treeb06a704457c3ab36d82e303d9441ad6deb35d281 /mrbgems/mruby-bin-mirb/tools
parent44c29e88aeaf241915b3d10a44d4a3748d1a6328 (diff)
downloadmruby-9723d6e4ba45c404dc420021558b25ca0494c8d8.tar.gz
mruby-9723d6e4ba45c404dc420021558b25ca0494c8d8.zip
mirb dies if #inspect returns a non-string value; fix #2666
Diffstat (limited to 'mrbgems/mruby-bin-mirb/tools')
-rw-r--r--mrbgems/mruby-bin-mirb/tools/mirb/mirb.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c b/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c
index b0a94e6c5..6fafa340a 100644
--- a/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c
+++ b/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c
@@ -74,16 +74,21 @@ get_history_path(mrb_state *mrb)
static void
p(mrb_state *mrb, mrb_value obj, int prompt)
{
- obj = mrb_funcall(mrb, obj, "inspect", 0);
+ mrb_value val;
+
+ val = mrb_funcall(mrb, obj, "inspect", 0);
if (prompt) {
if (!mrb->exc) {
fputs(" => ", stdout);
}
else {
- obj = mrb_funcall(mrb, mrb_obj_value(mrb->exc), "inspect", 0);
+ val = mrb_funcall(mrb, mrb_obj_value(mrb->exc), "inspect", 0);
}
}
- fwrite(RSTRING_PTR(obj), RSTRING_LEN(obj), 1, stdout);
+ if (!mrb_string_p(val)) {
+ val = mrb_obj_as_string(mrb, obj);
+ }
+ fwrite(RSTRING_PTR(val), RSTRING_LEN(val), 1, stdout);
putc('\n', stdout);
}