summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--iseq.c7
-rw-r--r--vm_core.h2
3 files changed, 11 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index a311d2d..e63c8c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/iseq.c b/iseq.c
index 2be4f89..20b7dc7 100644
--- a/iseq.c
+++ b/iseq.c
@@ -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;
}
diff --git a/vm_core.h b/vm_core.h
index 3345607..e173fab 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -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 */