diff options
| -rw-r--r-- | mrbgems/mruby-bin-mirb/tools/mirb/mirb.c | 11 | ||||
| -rw-r--r-- | src/print.c | 9 |
2 files changed, 15 insertions, 5 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); } diff --git a/src/print.c b/src/print.c index 6c561100f..b43936b13 100644 --- a/src/print.c +++ b/src/print.c @@ -27,8 +27,13 @@ MRB_API void mrb_p(mrb_state *mrb, mrb_value obj) { #ifdef ENABLE_STDIO - obj = mrb_funcall(mrb, obj, "inspect", 0); - printstr(mrb, obj); + mrb_value val; + + val = mrb_funcall(mrb, obj, "inspect", 0); + if (!mrb_string_p(val)) { + val = mrb_obj_as_string(mrb, obj); + } + printstr(mrb, val); putc('\n', stdout); #endif } |
