summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/debug.c8
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));