Bail out before pushing unexpected object

This commit is contained in:
Nobuyoshi Nakada 2020-04-03 01:06:56 +09:00
parent 2544bf9452
commit 2a4049b23c
No known key found for this signature in database
GPG Key ID: 4BC7D6DF58D8DF60

12
gc.c
View File

@ -4629,6 +4629,18 @@ free_stack_chunks(mark_stack_t *stack)
static void
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) {
push_mark_stack_chunk(stack);
}