diff options
| author | KOBAYASHI Shuji <[email protected]> | 2019-10-09 20:00:17 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2019-10-09 20:00:17 +0900 |
| commit | 7f6e8e8ddc6b6f33e22c02c3b78280cb74db4725 (patch) | |
| tree | 145ad74ba9044da03590644f1660460cf8a8592e | |
| parent | 7624e2342690930ca1aed2f6a45140b3ee605d46 (diff) | |
| download | mruby-7f6e8e8ddc6b6f33e22c02c3b78280cb74db4725.tar.gz mruby-7f6e8e8ddc6b6f33e22c02c3b78280cb74db4725.zip | |
Fix that `print` command raises `FrozenError` in `mrdb`; ref 1f5a7f2f
#### Before this patch:
```
$ echo 'p true' | bin/mrdb /dev/null
(/dev/null:1) mruby application exited.
FrozenError: can't modify frozen String
(-:0)
```
#### After this patch:
```
$ echo 'p true' | bin/mrdb /dev/null
(/dev/null:1) $1 = true
(/dev/null:1)
```
| -rw-r--r-- | mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c | 2 | ||||
| -rw-r--r-- | mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c b/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c index cdd7b6fa6..e8702f4df 100644 --- a/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +++ b/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c @@ -74,7 +74,7 @@ mrb_debug_eval(mrb_state *mrb, mrb_debug_context *dbg, const char *expr, size_t *exc = mrb_obj_is_kind_of(mrb, v, mrb->eException_class); } - s = mrb_funcall(mrb, v, "inspect", 0); + s = mrb_inspect(mrb, v); /* enable code_fetch_hook */ mrb->code_fetch_hook = tmp; diff --git a/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c b/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c index 25f071589..f78c1e1fc 100644 --- a/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c +++ b/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c @@ -18,7 +18,6 @@ dbgcmd_print(mrb_state *mrb, mrdb_state *mrdb) { mrb_value expr; mrb_value result; - mrb_value s; uint8_t wcnt; int ai; @@ -39,8 +38,9 @@ dbgcmd_print(mrb_state *mrb, mrdb_state *mrdb) result = mrb_debug_eval(mrb, mrdb->dbg, RSTRING_PTR(expr), RSTRING_LEN(expr), NULL, 0); /* $print_no = result */ - s = mrb_str_cat_lit(mrb, result, "\0"); - printf("$%lu = %s\n", (unsigned long)mrdb->print_no++, RSTRING_PTR(s)); + printf("$%lu = ", (unsigned long)mrdb->print_no++); + fwrite(RSTRING_PTR(result), RSTRING_LEN(result), 1, stdout); + putc('\n', stdout); if (mrdb->print_no == 0) { mrdb->print_no = 1; |
