diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-12-12 13:14:56 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-12-12 13:14:56 +0900 |
| commit | 9723d6e4ba45c404dc420021558b25ca0494c8d8 (patch) | |
| tree | b06a704457c3ab36d82e303d9441ad6deb35d281 /mrbgems/mruby-bin-mirb/tools | |
| parent | 44c29e88aeaf241915b3d10a44d4a3748d1a6328 (diff) | |
| download | mruby-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.c | 11 |
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); } |
