summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--id_table.c5
-rw-r--r--shape.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/id_table.c b/id_table.c
index a85be772e7..4c9ebf123b 100644
--- a/id_table.c
+++ b/id_table.c
@@ -381,6 +381,7 @@ managed_id_table_dup_i(ID id, VALUE val, void *data)
VALUE
rb_managed_id_table_dup(VALUE old_table)
{
+ RUBY_ASSERT(RB_TYPE_P(old_table, T_DATA));
RUBY_ASSERT(rb_typeddata_inherited_p(RTYPEDDATA_TYPE(old_table), &managed_id_table_type));
struct rb_id_table *new_tbl;
@@ -394,6 +395,7 @@ rb_managed_id_table_dup(VALUE old_table)
int
rb_managed_id_table_lookup(VALUE table, ID id, VALUE *valp)
{
+ RUBY_ASSERT(RB_TYPE_P(table, T_DATA));
RUBY_ASSERT(rb_typeddata_inherited_p(RTYPEDDATA_TYPE(table), &managed_id_table_type));
return rb_id_table_lookup(RTYPEDDATA_GET_DATA(table), id, valp);
@@ -402,6 +404,7 @@ rb_managed_id_table_lookup(VALUE table, ID id, VALUE *valp)
int
rb_managed_id_table_insert(VALUE table, ID id, VALUE val)
{
+ RUBY_ASSERT(RB_TYPE_P(table, T_DATA));
RUBY_ASSERT(rb_typeddata_inherited_p(RTYPEDDATA_TYPE(table), &managed_id_table_type));
return rb_id_table_insert(RTYPEDDATA_GET_DATA(table), id, val);
@@ -410,6 +413,7 @@ rb_managed_id_table_insert(VALUE table, ID id, VALUE val)
size_t
rb_managed_id_table_size(VALUE table)
{
+ RUBY_ASSERT(RB_TYPE_P(table, T_DATA));
RUBY_ASSERT(rb_typeddata_inherited_p(RTYPEDDATA_TYPE(table), &managed_id_table_type));
return rb_id_table_size(RTYPEDDATA_GET_DATA(table));
@@ -418,6 +422,7 @@ rb_managed_id_table_size(VALUE table)
void
rb_managed_id_table_foreach(VALUE table, rb_id_table_foreach_func_t *func, void *data)
{
+ RUBY_ASSERT(RB_TYPE_P(table, T_DATA));
RUBY_ASSERT(rb_typeddata_inherited_p(RTYPEDDATA_TYPE(table), &managed_id_table_type));
rb_id_table_foreach(RTYPEDDATA_GET_DATA(table), func, data);
diff --git a/shape.c b/shape.c
index 027cbaf8b9..75dfc49fc0 100644
--- a/shape.c
+++ b/shape.c
@@ -303,7 +303,7 @@ static void
shape_tree_mark(void *data)
{
rb_shape_t *cursor = rb_shape_get_root_shape();
- rb_shape_t *end = RSHAPE(GET_SHAPE_TREE()->next_shape_id);
+ rb_shape_t *end = RSHAPE(GET_SHAPE_TREE()->next_shape_id - 1);
while (cursor < end) {
if (cursor->edges && !SINGLE_CHILD_P(cursor->edges)) {
// FIXME: GC compaction may call `rb_shape_traverse_from_new_root`