diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | iseq.c | 7 | ||||
-rw-r--r-- | vm_core.h | 2 |
3 files changed, 11 insertions, 4 deletions
@@ -1,3 +1,9 @@ +Sat Jul 25 06:00:09 2015 Koichi Sasada <ko1@atdot.net> + + * vm_core.h: constify rb_iseq_constant_body::line_info_table. + + * iseq.c: catch up this fix. + Sat Jul 25 05:56:43 2015 Koichi Sasada <ko1@atdot.net> * vm_core.h: constify rb_iseq_constant_body::param::opt_table and @@ -1060,11 +1060,11 @@ iseqw_to_a(VALUE self) /* TODO: search algorithm is brute force. this should be binary search or so. */ -static struct iseq_line_info_entry * +static const struct iseq_line_info_entry * get_line_info(const rb_iseq_t *iseq, size_t pos) { size_t i = 0, size = iseq->body->line_info_size; - struct iseq_line_info_entry *table = iseq->body->line_info_table; + const struct iseq_line_info_entry *table = iseq->body->line_info_table; const int debug = 0; if (debug) { @@ -1098,7 +1098,8 @@ get_line_info(const rb_iseq_t *iseq, size_t pos) static unsigned int find_line_no(const rb_iseq_t *iseq, size_t pos) { - struct iseq_line_info_entry *entry = get_line_info(iseq, pos); + const struct iseq_line_info_entry *entry = get_line_info(iseq, pos); + if (entry) { return entry->line_no; } @@ -330,7 +330,7 @@ struct rb_iseq_constant_body { rb_iseq_location_t location; /* insn info, must be freed */ - struct iseq_line_info_entry *line_info_table; + const struct iseq_line_info_entry *line_info_table; const ID *local_table; /* must free */ |