From ff7df939ba88389cd7f1a2226b3e1d49822711b3 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 31 May 2017 23:15:17 +0900 Subject: Restore MRB_API function `mrb_exc_backtrace(mrb, exc)`; ref 9644ad5 --- src/backtrace.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/backtrace.c') diff --git a/src/backtrace.c b/src/backtrace.c index ea88aca9f..dd00bc9d2 100644 --- a/src/backtrace.c +++ b/src/backtrace.c @@ -227,7 +227,23 @@ mrb_unpack_backtrace(mrb_state *mrb, mrb_value backtrace) return backtrace; } -mrb_value +MRB_API mrb_value +mrb_exc_backtrace(mrb_state *mrb, mrb_value exc) +{ + mrb_sym attr_name; + mrb_value backtrace; + + attr_name = mrb_intern_lit(mrb, "backtrace"); + backtrace = mrb_iv_get(mrb, exc, attr_name); + if (mrb_nil_p(backtrace) || mrb_array_p(backtrace)) { + return backtrace; + } + backtrace = mrb_unpack_backtrace(mrb, backtrace); + mrb_iv_set(mrb, exc, attr_name, backtrace); + return backtrace; +} + +MRB_API mrb_value mrb_get_backtrace(mrb_state *mrb) { return mrb_unpack_backtrace(mrb, packed_backtrace(mrb)); -- cgit v1.2.3