summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-01-08 00:49:23 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-01-08 00:49:23 +0900
commitcff4ac6bb7fac7cf72b58a0081d7dacd9c1f492c (patch)
tree8ca7f82f7f0276b94adbe4565b150f9ea54d79cb
parent1cdf2838996a3be41c2ba976d16cc1de286b5e50 (diff)
downloadmruby-cff4ac6bb7fac7cf72b58a0081d7dacd9c1f492c.tar.gz
mruby-cff4ac6bb7fac7cf72b58a0081d7dacd9c1f492c.zip
skip "trace:" header if no backtrace line exists
-rw-r--r--src/backtrace.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/backtrace.c b/src/backtrace.c
index 8567f4f5a..76b5961b9 100644
--- a/src/backtrace.c
+++ b/src/backtrace.c
@@ -62,9 +62,8 @@ mrb_output_backtrace(mrb_state *mrb, struct RObject *exc, output_stream_func fun
mrb_callinfo *ci;
mrb_int ciidx;
const char *filename, *method, *sep;
- int i, lineno;
+ int i, lineno, tracehead = 1;
- func(mrb, stream, 1, "trace:\n");
ciidx = mrb_fixnum(mrb_obj_iv_get(mrb, exc, mrb_intern_lit(mrb, "ciidx")));
if (ciidx >= mrb->c->ciend - mrb->c->cibase)
ciidx = 10; /* ciidx is broken... */
@@ -103,6 +102,10 @@ mrb_output_backtrace(mrb_state *mrb, struct RObject *exc, output_stream_func fun
filename = "(unknown)";
}
+ if (tracehead) {
+ func(mrb, stream, 1, "trace:\n");
+ tracehead = 0;
+ }
method = mrb_sym2name(mrb, ci->mid);
if (method) {
const char *cn = mrb_class_name(mrb, ci->proc->target_class);