Bail out before pushing unexpected object

This commit is contained in:
Nobuyoshi Nakada 2020-04-03 01:06:56 +09:00
Родитель 2544bf9452
Коммит 2a4049b23c
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4BC7D6DF58D8DF60
1 изменённых файлов: 12 добавлений и 0 удалений

12
gc.c
Просмотреть файл

@ -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);
}