diff options
Diffstat (limited to 'src/debug.c')
| -rw-r--r-- | src/debug.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/debug.c b/src/debug.c index 98b3338ff..7902c09ba 100644 --- a/src/debug.c +++ b/src/debug.c @@ -24,7 +24,9 @@ get_file(mrb_irep_debug_info *info, uint32_t pc) --ret; - mrb_assert(ret <= info->files && ret < (info->files + info->flen)); + // check returning file exists inside debug info + mrb_assert(info->files <= ret && ret < (info->files + info->flen)); + // check pc is within the range of returning file mrb_assert((*ret)->start_pos <= pc && pc < (((ret + 1 - info->files) < info->flen) ? (*(ret+1))->start_pos : info->pc_count)); @@ -89,7 +91,9 @@ mrb_debug_get_line(mrb_irep *irep, uint32_t pc) --ret; - mrb_assert((ret - f->line_flat_map) < (ptrdiff_t)f->line_entry_count); + // check line entry pointer range + mrb_assert(f->line_flat_map <= ret && ret < (f->line_flat_map + f->line_entry_count)); + // check pc range mrb_assert(ret->start_pos <= pc && pc < (((ret + 1 - f->line_flat_map) < f->line_entry_count) ? (ret+1)->start_pos : irep->debug_info->pc_count)); |
