diff options
| author | take_cheeze <[email protected]> | 2013-09-03 00:00:07 +0900 |
|---|---|---|
| committer | take_cheeze <[email protected]> | 2013-09-03 00:00:07 +0900 |
| commit | 968f5d2a2788b64d0122da9f1c17c438c1079ce2 (patch) | |
| tree | fe61de4842ef1837f57006f6b3373fab18a7cd04 /src/debug.c | |
| parent | 3df8686259e37b03e8707d0a98c7d9e197e6398d (diff) | |
| download | mruby-968f5d2a2788b64d0122da9f1c17c438c1079ce2.tar.gz mruby-968f5d2a2788b64d0122da9f1c17c438c1079ce2.zip | |
improve checkings in debug.c
Diffstat (limited to 'src/debug.c')
| -rw-r--r-- | src/debug.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/debug.c b/src/debug.c index 3b8d52f3d..95e5906d4 100644 --- a/src/debug.c +++ b/src/debug.c @@ -24,10 +24,10 @@ get_file(mrb_irep_debug_info* info, uint32_t const pc) --ret; - mrb_assert(ret < (info->files + info->flen)); + mrb_assert(ret <= info->files && ret < (info->files + info->flen)); mrb_assert((*ret)->start_pos <= pc && - pc < (((ret + 1 - info->files) < info->flen) - ? (*(ret+1))->start_pos : info->pc_count)); + pc < (((ret + 1 - info->files) < info->flen) + ? (*(ret+1))->start_pos : info->pc_count)); return *ret; } @@ -50,8 +50,8 @@ select_line_type(uint16_t const* lines, size_t lines_len) char const* mrb_debug_get_filename(mrb_irep* irep, uint32_t pc) { - mrb_irep_debug_info_file* f = NULL; - if (irep) { + if (irep && pc < irep->ilen) { + mrb_irep_debug_info_file* f = NULL; if (!irep->debug_info) { return irep->filename; } else if ((f = get_file(irep->debug_info, pc))) { return f->filename; @@ -63,8 +63,8 @@ mrb_debug_get_filename(mrb_irep* irep, uint32_t pc) int32_t mrb_debug_get_line(mrb_irep* irep, uint32_t const pc) { - mrb_irep_debug_info_file* f = NULL; - if (irep) { + if (irep && pc < irep->ilen) { + mrb_irep_debug_info_file* f = NULL; if (!irep->debug_info) { return irep->lines? irep->lines[pc] : -1; } @@ -91,8 +91,8 @@ mrb_debug_get_line(mrb_irep* irep, uint32_t const pc) mrb_assert((ret - f->line_flat_map) < f->line_entry_count); 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)); + pc < (((ret + 1 - f->line_flat_map) < f->line_entry_count) + ? (ret+1)->start_pos : irep->debug_info->pc_count)); return ret->line; } |
