diff options
| author | jbreeden <[email protected]> | 2016-03-05 13:45:56 -0800 |
|---|---|---|
| committer | jbreeden <[email protected]> | 2016-03-05 13:45:56 -0800 |
| commit | e02ff850fe6eb77ee73571cc163783c3df3b4788 (patch) | |
| tree | 968678228af4f71c73d917c281db81d88b7a9636 /src/backtrace.c | |
| parent | 4f4fa0ade0fd80a3a6fa64bebcb5f71b0d4a8648 (diff) | |
| download | mruby-e02ff850fe6eb77ee73571cc163783c3df3b4788.tar.gz mruby-e02ff850fe6eb77ee73571cc163783c3df3b4788.zip | |
Null check for irep & initialize loc.lineno
Diffstat (limited to 'src/backtrace.c')
| -rw-r--r-- | src/backtrace.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/backtrace.c b/src/backtrace.c index 45a8cc2de..3c15fd83d 100644 --- a/src/backtrace.c +++ b/src/backtrace.c @@ -108,6 +108,8 @@ each_backtrace(mrb_state *mrb, mrb_int ciidx, mrb_code *pc0, each_backtrace_func for (i = ciidx; i >= 0; i--) { struct backtrace_location_raw loc; + loc.lineno = -1; + mrb_callinfo *ci; mrb_irep *irep; mrb_code *pc; @@ -128,8 +130,11 @@ each_backtrace(mrb_state *mrb, mrb_int ciidx, mrb_code *pc0, each_backtrace_func else { pc = pc0; } - loc.filename = mrb_debug_get_filename(irep, (uint32_t)(pc - irep->iseq)); - loc.lineno = mrb_debug_get_line(irep, (uint32_t)(pc - irep->iseq)); + + if (irep) { + loc.filename = mrb_debug_get_filename(irep, (uint32_t)(pc - irep->iseq)); + loc.lineno = mrb_debug_get_line(irep, (uint32_t)(pc - irep->iseq)); + } if (loc.lineno == -1) continue; |
