Bail out before pushing unexpected object
This commit is contained in:
parent
2544bf9452
commit
2a4049b23c
12
gc.c
12
gc.c
@ -4629,6 +4629,18 @@ free_stack_chunks(mark_stack_t *stack)
|
|||||||
static void
|
static void
|
||||||
push_mark_stack(mark_stack_t *stack, VALUE data)
|
push_mark_stack(mark_stack_t *stack, VALUE data)
|
||||||
{
|
{
|
||||||
|
VALUE obj = data;
|
||||||
|
switch (BUILTIN_TYPE(obj)) {
|
||||||
|
case T_NIL:
|
||||||
|
case T_FIXNUM:
|
||||||
|
rb_bug("push_mark_stack() called for broken object");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case T_NODE:
|
||||||
|
UNEXPECTED_NODE(push_mark_stack);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (stack->index == stack->limit) {
|
if (stack->index == stack->limit) {
|
||||||
push_mark_stack_chunk(stack);
|
push_mark_stack_chunk(stack);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user