summaryrefslogtreecommitdiffhomepage
path: root/src/backtrace.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2019-12-19 09:50:22 +0900
committerGitHub <[email protected]>2019-12-19 09:50:22 +0900
commit868ba8464e9862d07f34ca4d214b2fbab84ab725 (patch)
treecbb420a57cbbd2e250336003029f94337d2142cd /src/backtrace.c
parent429f6defdd50ddd6e7d8dc469e8ad7f360232bd1 (diff)
parent6df6bd4ac72a16e3addfe0f7cc3b0d436dddcf8c (diff)
downloadmruby-868ba8464e9862d07f34ca4d214b2fbab84ab725.tar.gz
mruby-868ba8464e9862d07f34ca4d214b2fbab84ab725.zip
Merge pull request #4882 from shuujii/simplify-print_backtrace
Simplify `print_backtrace()`
Diffstat (limited to 'src/backtrace.c')
-rw-r--r--src/backtrace.c24
1 files changed, 7 insertions, 17 deletions
diff --git a/src/backtrace.c b/src/backtrace.c
index a25a5adad..186009523 100644
--- a/src/backtrace.c
+++ b/src/backtrace.c
@@ -25,8 +25,7 @@ typedef void (*each_backtrace_func)(mrb_state*, const struct backtrace_location*
static const mrb_data_type bt_type = { "Backtrace", mrb_free };
-mrb_value mrb_exc_to_s(mrb_state *mrb, mrb_value exc);
-mrb_value mrb_mod_to_s(mrb_state *mrb, mrb_value klass);
+mrb_value mrb_exc_inspect(mrb_state *mrb, mrb_value exc);
mrb_value mrb_unpack_backtrace(mrb_state *mrb, mrb_value backtrace);
static void
@@ -82,7 +81,7 @@ print_backtrace(mrb_state *mrb, struct RObject *exc, mrb_value backtrace)
{
int i;
mrb_int n = RARRAY_LEN(backtrace);
- mrb_value *loc, mesg, cname;
+ mrb_value *loc, mesg;
FILE *stream = stderr;
if (n != 0) {
@@ -93,21 +92,12 @@ print_backtrace(mrb_state *mrb, struct RObject *exc, mrb_value backtrace)
i, (int)RSTRING_LEN(*loc), RSTRING_PTR(*loc));
}
}
+ if (mrb_string_p(*loc)) {
+ fprintf(stream, "%.*s: ", (int)RSTRING_LEN(*loc), RSTRING_PTR(*loc));
+ }
}
-
- if (n != 0) {
- fprintf(stream, "%.*s: ", (int)RSTRING_LEN(*loc), RSTRING_PTR(*loc));
- }
- mesg = mrb_exc_to_s(mrb, mrb_obj_value(exc));
- cname = mrb_mod_to_s(mrb, mrb_obj_value(exc->c));
- if (RSTRING_LEN(mesg) == 0) {
- fprintf(stream, "%.*s \n", (int)RSTRING_LEN(cname), RSTRING_PTR(cname));
- }
- else {
- fprintf(stream, "%.*s (%.*s)\n",
- (int)RSTRING_LEN(mesg), RSTRING_PTR(mesg),
- (int)RSTRING_LEN(cname), RSTRING_PTR(cname));
- }
+ mesg = mrb_exc_inspect(mrb, mrb_obj_value(exc));
+ fprintf(stream, "%.*s\n", (int)RSTRING_LEN(mesg), RSTRING_PTR(mesg));
}
/* mrb_print_backtrace