summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-05-25 12:56:19 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-05-25 12:56:19 +0900
commite969229b77b9c3b1f6ff4de7d9ce6d15586a9c15 (patch)
tree1347bd509362b3ae0be3dc228f6106461c503d84 /src
parent5e1a6a2cc296dfbe9e311870d24dfcbc0aee1fad (diff)
downloadmruby-e969229b77b9c3b1f6ff4de7d9ce6d15586a9c15.tar.gz
mruby-e969229b77b9c3b1f6ff4de7d9ce6d15586a9c15.zip
Check backtrace info may not be set (esp. NoMemError); fix #3663
Diffstat (limited to 'src')
-rw-r--r--src/backtrace.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/backtrace.c b/src/backtrace.c
index 5081f1809..17b4d0968 100644
--- a/src/backtrace.c
+++ b/src/backtrace.c
@@ -138,6 +138,7 @@ mrb_print_backtrace(mrb_state *mrb)
}
backtrace = mrb_obj_iv_get(mrb, mrb->exc, mrb_intern_lit(mrb, "backtrace"));
+ if (mrb_nil_p(backtrace)) return;
if (mrb_array_p(backtrace)) {
print_backtrace(mrb, backtrace);
}
@@ -198,6 +199,7 @@ mrb_unpack_backtrace(mrb_state *mrb, mrb_value backtrace)
struct backtrace_location *bt;
mrb_int n, i;
+ if (mrb_nil_p(backtrace)) return mrb_ary_new_capa(mrb, 0);
if (mrb_array_p(backtrace)) return backtrace;
if (!mrb_string_p(backtrace)) {
broken: