r_object0: do not goto into a branch

I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea.  Better refactor.
This commit is contained in:
卜部昌平 2020-06-15 16:09:33 +09:00
Родитель 6575766ea0
Коммит 41703fcfab
1 изменённых файлов: 4 добавлений и 2 удалений

Просмотреть файл

@ -1739,8 +1739,7 @@ r_object0(struct load_arg *arg, int *ivp, VALUE extmod)
}
v = r_object0(arg, 0, extmod);
if (rb_special_const_p(v) || RB_TYPE_P(v, T_OBJECT) || RB_TYPE_P(v, T_CLASS)) {
format_error:
rb_raise(rb_eArgError, "dump format error (user class)");
goto format_error;
}
if (RB_TYPE_P(v, T_MODULE) || !RTEST(rb_class_inherited_p(c, RBASIC(v)->klass))) {
VALUE tmp = rb_obj_alloc(c);
@ -1751,6 +1750,9 @@ r_object0(struct load_arg *arg, int *ivp, VALUE extmod)
}
break;
format_error:
rb_raise(rb_eArgError, "dump format error (user class)");
case TYPE_NIL:
v = Qnil;
v = r_leave(v, arg);